「表示シートにループ処理」
という検索で、このサイト『インストラクターのネタ帳』へのアクセスがありました。
VBA(Visual Basic for Applications)を使ってExcelマクロを作り始めたばかりの方による検索でしょうか。
表示されているシートにだけ、何らかのループ処理を行うにはどのような記述をすればいいのかを調べている方による検索でしょう。
ループの中で、具体的に何がしたいのかが不明ですので、参考になりそうなマクロをご紹介しておきます。
表示されているシートのシート名を順番にメッセージボックスに表示するマクロです。
For~Nextで表示されているシートにだけループ処理
カウンタ変数を使うFor~Next文の場合、以下のようなマクロで、表示されているシートのシート名を順番にメッセージボックスに表示させることができます。
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文の場合は、以下のようなマクロです。
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で表示されているシートにだけループ処理