「表示シートにループ処理」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
VBA(Visual Basic for Applications)を使ってExcelマクロを作り始めたばかりの方による検索でしょうか。
表示されているシートにだけ、何らかのループ処理を行うにはどのような記述をすればいいのかを調べている方による検索でしょう。
ループの中で、具体的に何がしたいのかが不明ですので、参考になりそうなマクロをご紹介しておきます。
表示されているシートのシート名を順番にメッセージボックスに表示するマクロです。
Sub 表示されているシートのシート名をメッセージ表示する_1()
Dim i As Long
For i = 1 To Sheets.Count
If Sheets(i).Visible = True Then
MsgBox Sheets(i).Name
End If
Next i
カウンタ変数を使うFor ~ Next文の場合、上記のようなマクロで、表示されているシートのシート名を順番にメッセージボックスに表示させることができます。
カウンタ変数・iが、1からSheets.Count(シートの枚数)になるまで回りつづけるループ処理の中で、
For i = 1 To Sheets.Count
そのシートの表示状態を調べ、表示されているなら、
If Sheets(i).Visible = True Then
そのシートのシート名をメッセージボックスに表示しています。
MsgBox Sheets(i).Name
オブジェクト変数を使った、For Each ~ Next文の場合は、以下のようなマクロです。
Sub 表示されているシートのシート名をメッセージ表示する_2()
Dim sh As Object
For Each sh In Sheets
If sh.Visible = True Then
MsgBox sh.Name
End If
Next sh
やっていることは、先のカウンタ変数を使ったFor ~ Next文によるループ処理と同じです。
全シートに対するループ処理の中で、
For Each sh In Sheets
そのシートの表示状態を調べ、表示されているなら、
If sh.Visible = True Then
そのシートのシート名をメッセージボックスに表示しています。
MsgBox sh.Name
Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » 表示されているシートにだけループ処理するマクロ
TrackBack:0
- TrackBack URL