Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » VBAで表示されているシートにだけループ処理

VBAで表示されているシートにだけループ処理

対象:Excel2003, Excel2007, Excel2010, Excel2013

「表示シートにループ処理」
という検索で、このサイト『インストラクターのネタ帳』へのアクセスがありました。

VBA(Visual Basic for Applications)を使ってExcelマクロを作り始めたばかりの方による検索でしょうか。

表示されているシートにだけ、何らかのループ処理を行うにはどのような記述をすればいいのかを調べている方による検索でしょう。

ループの中で、具体的に何がしたいのかが不明ですので、参考になりそうなマクロをご紹介しておきます。

[スポンサードリンク]

表示されているシートのシート名を順番にメッセージボックスに表示するマクロです。

For~Nextで表示されているシートにだけループ処理

カウンタ変数を使うFor~Next文の場合、以下のようなマクロで、表示されているシートのシート名を順番にメッセージボックスに表示させることができます。

Sub 表示されているシートのシート名をメッセージボックスに表示する_1()
 Dim i As Long
 For i = 1 To Sheets.Count
  If Sheets(i).Visible = xlSheetVisible Then
   MsgBox Sheets(i).Name
  End If
 Next
End Sub

カウンタ変数iが、1からSheets.Count(シートの枚数)になるまで回りつづけるループ処理の中で、
 For i = 1 To Sheets.Count

そのシートの表示状態を調べ、表示されているなら、
  If Sheets(i).Visible = xlSheetVisible Then

そのシートのシート名をメッセージボックスに表示しています。
   MsgBox Sheets(i).Name

For Each~Nextで表示されているシートにだけループ処理

オブジェクト変数を使った、For Each~Next文の場合は、以下のようなマクロです。

Sub 表示されているシートのシート名をメッセージボックスに表示する_2()
 Dim sht As Object
 For Each sht In Sheets
  If sht.Visible = xlSheetVisible Then
   MsgBox sht.Name
  End If
 Next
End Sub

やっていることは、先のカウンタ変数を使ったFor~Next文によるループ処理と同じです。

全シートに対するループ処理の中で、
 For Each sht In Sheets

そのシートの表示状態を調べ、表示されているなら、
  If sht.Visible = xlSheetVisible Then

そのシートのシート名をメッセージボックスに表示しています。
   MsgBox sht.Name

最終更新日時:2022-01-31 12:56

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » VBAで表示されているシートにだけループ処理

「Sheets・Worksheet」の記事一覧

検索


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

.