Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » 全シート名をイミディエイトウィンドウにDebug.Print

全シート名をイミディエイトウィンドウにDebug.Print

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

このサイト・インストラクターのネタ帳のアクセスログを眺めていて、
「debug.print シート名 vba」
「イミディエイトウィンドウ すべてのシートの名前を取得」
といった検索でのアクセスに気づきました。

すべてのシート名を、イミディエイトウィンドウにDebug.PrintするExcel VBA(Visual Basic for Applications)のコードを探していた方による、検索キーワードです。

「debug.print シート名 vba」
という検索キーワードだけからは、Subプロシージャ(マクロ)を探していたのか、イミディエイトウィンドウからコードを実行する方法を探していたのかがわかりませんので、この記事ではそれぞれの、For Each~Nextループを使うコードとFor~Nextループを使うコードをご紹介します。

[スポンサードリンク]

For Each~Nextでシート名をイミディエイトウィンドウにDebug.Printするサンプルマクロ

まずはSubプロシージャです。

Sub シート名をイミディエイトウィンドウに出力する1()
 Dim sh As Object ' WorksheetまたはChart

 For Each sh In Sheets
  Debug.Print sh.Name
 Next sh
End Sub

ワークシートもグラフシートも存在する可能性を考えて、総称Object型でオブジェクト変数を宣言して、
  Dim sh As Object

For Each~Nextループで、
  For Each sh In Sheets

シート名をDebug.Printしています。
   Debug.Print sh.Name

イミディエイトウィンドウでFor Each~Nextステートメントを実行してシート名を出力

上記のSubプロシージャと同じコードを、イミディエイトウィンドウで実行しても、全シート名をイミディエイトウィンドウに出力できます。
▼操作手順:全シート名をイミディエイトウィンドウに出力する
イミディエイトウィンドウに、
  for each sh in sheets: debug.print sh.name: next
というコードを入力して[Enter]キーを押してコードを実行する

イミディエイトウィンドウで実行するコードは変数宣言は不要なので、先のSubプロシージャの主たる処理、
  For Each sh In Sheets
   Debug.Print sh.Name
  Next
を1行にするために、行の末尾に「:」(コロン)を書いて記述したのが、「for each sh in sheets: debug.print sh.name: next」です。

イミディエイトウィンドウ内では「Debug.Print」を「?」で代用できますから、
  for each sh in sheets: ? sh.name: next

としても同じです。
こちらのほうが楽に入力できますから、私が手入力する場合はこの「?」を使ったコードを使います。

For~Nextでシート名をイミディエイトウィンドウにDebug.Printするサンプルマクロ

一般に、For Each~Nextループは、カウンター変数を使ったFor~Nextループでも書けますから、先のマクロは以下のようにも書けます。

Sub シート名をイミディエイトウィンドウに出力する2()
 Dim i As Long

 For i = 1 To Sheets.Count
  Debug.Print Sheets(i).Name
 Next i
End Sub

シート名一覧をワークシート上に作成する場合は、どのセルに書き出すのかを指定する必要があるために、For Each~Nextループよりも、For~Nextループを使うほうがシンプルなコードになりますが、今回のようにイミディエイトウィンドウに出力するだけなら、先のFor Each~Nextループのほうがシンプルです。

イミディエイトウィンドウでFor~Nextステートメントを実行してシート名を出力

上記のSubプロシージャと同じコードをイミディエイトウィンドウで実行するなら、以下のとおりです。
▼操作手順:全シート名をイミディエイトウィンドウに出力する
イミディエイトウィンドウに
  for i = 1 to sheets.count: debug.print sheets(i).name: next
というコードを入力して[Enter]キーを押してコードを実行する

もちろん、先のFor Each~Nextループと同じく「debug.print」を「?」で代用した、

  for i = 1 to sheets.count: ? sheets(i).name: next
でもOKです。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » 全シート名をイミディエイトウィンドウにDebug.Print

「Sheets・Worksheet」の記事一覧

検索


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

.