Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » For Each In Worksheetsで非表示シートを除外して処理する

For Each In Worksheetsで非表示シートを除外して処理する

動作検証バージョン: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

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

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » For Each In Worksheetsで非表示シートを除外して処理する

「Sheets・Worksheet」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.