【VBA(Excelマクロ)】シートを取得する方法まとめ|シート名・シート数

スポンサードリンク
VBA

この記事を読んでわかること

  • VBAでシートを取得する方法がわかる
  • シートのプロパティを取得する方法を学べる
  • シート取得でよくあるエラーと対処法を知れる

※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。

-著者情報-
名前:Utatane
VBA(マクロ)歴:3年
Excel使用歴:15年以上
ひとこと:初心者だった当時に戻った気持ちになって解説いたします

スポンサードリンク

VBA(Excelマクロ)でシートを取得する方法

シートを取得するには、「Worksheets」コレクションの中からシート(オブジェクト)を指定します。

コレクションとは、同類のオブジェクトをまとめたもの(集合体)を指します。
オブジェクトとは、操作対象(ブックやシート、セルなど)を指します。

要は、数あるシートの中から1つを指定すればいいということになります。
ではまず、基本構文から見ていきましょう。

基本構文

シートを取得するには、下記のように記述します。

▼基本構文
Worksheets(シートを指定)

▼使用例
Worksheets("Sheet1") ' シート名で指定
Worksheets(1)        ' シート番号で指定

アクティブシート(選択状態のシート)を取得する場合は、下記のとおり記述してください。

Activesheet

シートを指定する方法は下記記事で解説しております。ご参考ください。

しかしながら、シートを取得しただけでは、何もしていないのと同じです。
では次に、取得したシートを変数に代入してみましょう。

取得したシートを変数に代入

下記VBAコードにて、取得したシートを変数に代入することができます。

Dim ws As Worksheet           ' シートを代入する変数(ws)を作成
Set ws = Worksheets("Sheet1") ' シートを変数に代入

前提知識{マクロの基礎・作り方から実行まで
前提知識{変数の宣言や使い方

シートやセルなど、「オブジェクト」を変数に代入する場合は「Set」が必要になります。
詳細は下記記事で解説しておりますのでご参考ください。

では、取得したシートのプロパティを表示してみましょう。

取得したシートのプロパティを表示

今回は、取得したシートのシート名を表示した例です。
下記のVBAコードを見てください。

Sub シート名を表示()
    Dim ws As Worksheet
    Set ws = Worksheets(1)
    Debug.Print ws.Name
End Sub

前提知識{「Debug.Print」で値を表示させる方法

シート名を表示

今回は「シートを取得」→「取得したシートのプロパティ(シート名)を表示」という処理を行いましたが、
シートのプロパティだけを取得して表示する方法もあります。
次項をご覧ください。

スポンサードリンク

シートのプロパティを取得する方法

シート数を取得

「Worksheets」に「.Count」を付けることで、シート数を取得することができます。

Sub シート数を取得()
    Dim sheetnum As Integer
    sheetnum = Worksheets.Count
    Debug.Print sheetnum
End Sub

「Sheet1~3」の3枚のシートがあった場合、変数「sheetnum」には「3」が入ります。

シート数を取得

シート名を取得

指定したシートに「.Name」を付けることで、シート名を取得することができます。

Sub シート名を取得()
    Dim sheetname As String
    sheetname = Worksheets(1).Name
    Debug.Print sheetname
End Sub
シート名を取得

Forループと絡めることで、全シート一覧を表示することも可能です。

前提知識{ループ処理(For)

Sub シート名を取得()
    Dim sheetname As String
    Dim i As Integer
    For i = 1 To Worksheets.Count
        sheetname = Worksheets(i).Name
        Debug.Print sheetname
    Next i
End Sub
シート一覧を表示

シート番号を取得

指定したシートに「.Index」を付けることで、そのシートの番号(インデックス)を取得することができます。

Sub シート番号を取得()
    Dim sheetindex As Integer
    sheetindex = Worksheets("Sheet1").Index
    Debug.Print sheetindex
End Sub
シート番号を取得

シートのオブジェクト名を取得

指定したシートに「.CodeName」をつけることで、そのシートのオブジェクト名を取得することができます。

Sub シート名を取得()
    Dim sheetcodename As String
    sheetcodename = Worksheets(1).CodeName
    Debug.Print sheetcodename
End Sub
オブジェクトを取得

オブジェクト名は、VBAProjectの画面で確認・変更することができます。

オブジェクト名の確認・編集

シートのオブジェクト名を取得することで、以降オブジェクト名でシート指定を行うことができます。
これにより、プログラム途中でシートの並び順が変わったり、シート名が変わっても影響を受けません。

スポンサードリンク

よくあるエラーと対処法

オブジェクトが必要です

オブジェクトが必要です
オブジェクトが必要です

このエラーは、Setの使い忘れで発生する場合が多いです。
詳細な対処方法は、下記記事をご参考ください。

その他の実行時エラー

実行時エラー-2147352565
実行時エラー-2147352565
実行時エラー1004
実行時エラー1004

実行時エラーは、コードで指定した処理が実行できなかった時に発生します。
例えば「存在しないシートを指定した・選択した」「対応していないオブジェクトにメソッドを使った」などです。
「デバッグ」をクリックすることで、該当箇所が黄色くマーキングされますので、コードを再確認しましょう。

スポンサードリンク

最後に

VBA(Excelマクロ)でシートを取得する方法について解説いたしました。

当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

最後までお読みいただき、ありがとうございました。がんばってください!

タイトルとURLをコピーしました