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

表示されているシートにだけループ処理するマクロ

対象:Excel2003, Excel2007, Excel2010, Excel2013

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

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

End Sub

カウンタ変数を使う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

End Sub

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

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

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

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

[スポンサードリンク]

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

TrackBack:0

TrackBack URL

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

「Sheets・Worksheet」の記事一覧

検索


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

.