「一番左のシート vba」
「一番左のシート マクロ」
といった検索でアクセスがありました。
一番左のシートをどうしたいのかわかりませんが、ここではアクティブなブックの一番左のシートを取得する基本をお伝えします。
一番左のシートを取得するサンプルマクロ
以下のExcelマクロを実行すると、一番左のシート名がメッセージボックスに表示されます。
Dim sht As Object
Set sht = Sheets.Item(1)
MsgBox sht.Name
End Sub
もしも複数のシートがあるブックがアクティブで、一番左のシートが非表示になっていたとしても、一番左のシート名がメッセージボックスに表示されます。
サンプルマクロで行っている処理
一番左のシートを取得するコード
一番左のシートを取得しているのは、
Set sht = Sheets.Item(1)
の行です。
Sheetsプロパティを使うと、全シートを表すSheetsコレクションを取得できます。
SheetsコレクションのItemプロパティには、左から何番目かを表す整数などを指定できます。
「1」を指定すれば一番左のシート、「2」を指定すれば左から2番目のシートを取得できます。
この「.Item」は省略して、
Set sht = Sheets(1)
と書くのが一般的です。
変数の型
Excelのよく使われるシートにはワークシートとグラフシートの2つがあり、VBAから見ると、ワークシートはWorksheetオブジェクト、グラフシートはChartオブジェクトを操作することになります。
そのため、上記のサンプルマクロでは、オブジェクト変数を、
Dim sht As Object
と汎用的なObject型として宣言しています。
シート名の取得
一番左のシートを取得しているのは、
Set sht = Sheets.Item(1)
ですが、取得できていることを明確にするために、上記のサンプルマクロでは
MsgBox sht.Name
とシート名をメッセージボックスに表示しています。
ワークシートを表すWorksheetオブジェクトにも、グラフシートを表すChartオブジェクトにも、名前を取得するためのNameプロパティがあるため、「MsgBox sht.Name」と書くことができます。
ここでは一番左のシートを取得している箇所を明確にするために、あえてオブジェクト変数に取得した一番左のシートを代入して、その名前をメッセージボックスに表示させています。
一番左のシートの名前をメッセージボックスに表示するだけなら、以下のマクロでもOKです。
MsgBox Sheets.Item(1).Name
End Sub
この場合も「.Item」は省略して、以下のように書くのが一般的です。
MsgBox Sheets(1).Name
一番左のシートを選択する場合……
一番左のシートを取得するだけなら、上記のとおり「Sheets.Item(1)」「Sheets(1)」でOKですが、選択するとなると難易度が上がります。
一番左のシートが非表示になっている場合は、選択できないからです。
一番左のシートが非表示になっている場合は選択しないのか、表示されている一番左のシートを選択するのか、仕様を決める必要があります。
最終更新日時:2024-10-16 19:53
Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » VBAで一番左のシートを取得する