目次
目的
- ワークシートの名前を取得したい。
- グラフ Graph シートの名前も取得したい。
- ループで取得したい。
マクロの一例
- ワークシートが 3 枚ある状態でテストしてみます。
Sheet1 ~ 3 - 下記マクロを実行してみます。
Sub ワークシートの名前を取得するマクロ()
Debug.Print Worksheets(1).Name
Debug.Print Worksheets(2).Name
Debug.Print Worksheets(3).Name
End Sub - VBE のイミディエイトウィンドウに以下の内容が出力されました。
Sheet1 , Sheet2 , Sheet3
グラフシートがある場合
- グラフシートがある状態でテストしてます。
「Graph1」があります。 - 下記マクロを実行してみます。
Sub sheets使用_ワークシートの名前を取得するマクロ()
Debug.Print Sheets(1).Name
Debug.Print Sheets(2).Name
Debug.Print Sheets(3).Name
Debug.Print Sheets(4).Name
End Sub- Sheets で操作対象取得。
- VBE のイミディエイトウィンドウに以下の内容が出力されました。
Graph1 も取得されている。
Worksheets でグラフシートの名前を取得しようとした場合、エラーが発生するようです。
- エラーが発生するマクロを実行してみます。
Sub エラー発生_ワークシートの名前を取得するマクロ()
Debug.Print Worksheets(1).Name
Debug.Print Worksheets(2).Name
Debug.Print Worksheets(3).Name
Debug.Print Worksheets(4).Name 'エラー
End Sub - エラー発生。
実行時エラー '9':
インデックスが有効範囲にありません。エラー発生行。
ループで取得
-
Sheet1 ~ 3 をループで取得してみます。
Sheet1 ~ 3 - 下記マクロを実行してみます。
Sub ループでワークシート名取得()
Dim a
For a = 1 To Worksheets.Count
Debug.Print Worksheets(a).Name
Next
End Sub - VBE イミディエイトウィンドウへの出力結果です。
Sheet1 ~ 3 -
下記マクロでも同じ結果になりました。
Sub ForEach_ループでワークシート名取得()
Dim a
For Each a In Worksheets
Debug.Print a.Name
Next
End Sub
-
テスト環境
- Windows 10(64 ビット)
- Microsoft Office Excel 2003
以上、閲覧ありがとうございました。