動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2205 ビルド15225.20204 Microsoft Store)
「for each Worksheets 非表示 外す」
といった検索キーワードで時折アクセスがあります。
Excel VBAのFor Each~Nextループで、非表示のワークシートを除外して処理するには、どのようなコードを書けばいいのかを探していらしたのでしょうか。
[スポンサードリンク]
非表示シートを除外して処理するサンプルマクロ
以下のExcelマクロを実行すると、アクティブブックの中で、表示されているワークシートが順番に選択され、メッセージボックスにシート名が表示されます。
Sub ForEachループで非表示シートを除外して処理する()
Dim ws As Worksheet
For Each ws In Worksheets
If ws.Visible = xlSheetVisible Then
ws.Select
MsgBox ws.Name
End If
Next
End Sub
Dim ws As Worksheet
For Each ws In Worksheets
If ws.Visible = xlSheetVisible Then
ws.Select
MsgBox ws.Name
End If
Next
End Sub
Excelの非表示シートには、xlSheetHidden(直値:0)とxlSheetVeryHidden(直値:2)の2種類があるため、非表示シートを除外するのではなく、表示されているシートのみを処理対象としています。
For Each ws In Worksheets If ws.Visible = xlSheetVisible Then
For~Nextで非表示シートを除外して処理する
ほとんどの場合、VBAのFor Each~Nextループは、For~Nextループでも書くことができます。
以下のようなマクロでも、先ほどと同様の結果になります。
Sub For文で非表示シートを除外して処理する()
Dim i As Long
With Worksheets
For i = 1 To .Count
If .Item(i).Visible = xlSheetVisible Then
.Item(i).Select
MsgBox .Item(i).Name
End If
Next
End With
End Sub
Dim i As Long
With Worksheets
For i = 1 To .Count
If .Item(i).Visible = xlSheetVisible Then
.Item(i).Select
MsgBox .Item(i).Name
End If
Next
End With
End Sub
[スポンサードリンク]
Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » For Each In Worksheetsで非表示シートを除外して処理する