目次

目的

  • ワークシートの名前を取得したい。
  • グラフ Graph シートの名前も取得したい。
  • ループで取得したい。

目次まで戻る

マクロの一例

  1. ワークシートが 3 枚ある状態でテストしてみます。
    Sheet1 ~ 3
    Sheet1 ~ 3
  2. 下記マクロを実行してみます。
    Sub ワークシートの名前を取得するマクロ()
    Debug.Print Worksheets(1).Name
    Debug.Print Worksheets(2).Name
    Debug.Print Worksheets(3).Name
    End Sub
  3. VBE のイミディエイトウィンドウに以下の内容が出力されました。
    Sheet1 , Sheet2 , Sheet3
    Sheet1 , Sheet2 , Sheet3

目次まで戻る

グラフシートがある場合

  1. グラフシートがある状態でテストしてます。
    「Graph1」があります。
    「Graph1」があります。
  2. 下記マクロを実行してみます。
    Sub sheets使用_ワークシートの名前を取得するマクロ()
    Debug.Print Sheets(1).Name
    Debug.Print Sheets(2).Name
    Debug.Print Sheets(3).Name
    Debug.Print Sheets(4).Name
    End Sub
    1. Sheets で操作対象取得。
  3. VBE のイミディエイトウィンドウに以下の内容が出力されました。
    Graph1 も取得されている。
    Graph1 も取得されている。

Worksheets でグラフシートの名前を取得しようとした場合、エラーが発生するようです。

  1. エラーが発生するマクロを実行してみます。
    Sub エラー発生_ワークシートの名前を取得するマクロ()
    Debug.Print Worksheets(1).Name
    Debug.Print Worksheets(2).Name
    Debug.Print Worksheets(3).Name
    Debug.Print Worksheets(4).Name 'エラー
    End Sub
  2. エラー発生。
    実行時エラー '9':
インデックスが有効範囲にありません。
    実行時エラー '9':
    インデックスが有効範囲にありません。
    エラー発生行。
    エラー発生行。

目次まで戻る

ループで取得

  1. Sheet1 ~ 3 をループで取得してみます。

    Sheet1 ~ 3
    Sheet1 ~ 3
  2. 下記マクロを実行してみます。
    Sub ループでワークシート名取得()
      Dim a
      For a = 1 To Worksheets.Count
        Debug.Print Worksheets(a).Name
      Next
    End Sub
  3. VBE イミディエイトウィンドウへの出力結果です。
    Sheet1 ~ 3
    Sheet1 ~ 3
    1. 下記マクロでも同じ結果になりました。

      Sub ForEach_ループでワークシート名取得()
      Dim a
      For Each a In Worksheets
      Debug.Print a.Name
      Next
      End Sub

テスト環境

  • Windows 10(64 ビット)
  • Microsoft Office Excel 2003

以上、閲覧ありがとうございました。

 

目次まで戻る

同じカテゴリの投稿(Excel VBA)

前後の投稿