LoginSignup
1
2

More than 5 years have passed since last update.

【VBA】アクティブでないシートに対する処理でエラー

Posted at

盲点でしたw
メモとして残します。

状況

For Eachでワークシートを検索して、特定のワークシートに対してセル書式変換を行う。

Dim k As Integer: k = 1
For Each sh In WorkSheets
    If sh.Name = "XXXXX" Then
        sh.Range(Columns(1), Columns(1)).NumberFormat = "@"
    End If
Next

発生した事象

sh.Range(Columns(1), Columns(1)).NumberFormat = "@"

の箇所でエラー。
image.png

解決方法

処理対象のシートをアクティブにする。
アクティブでないシートに対しての処理はエラーとなってしまうため。

Dim k As Integer: k = 1
For Each sh In WorkSheets
    If sh.Name = "XXXXX" Then
        sh.Activate '追加
        sh.Range(Columns(1), Columns(1)).NumberFormat = "@"
    End If
Next
1
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2