Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » VBAで一番左のシートを取得する

VBAで一番左のシートを取得する

動作検証バージョン:Windows 11 Home + 64bit Excel バージョン 2411(ビルド18201.20000クイック実行)ベータチャネル

「一番左のシート vba」
「一番左のシート マクロ」
といった検索でアクセスがありました。

一番左のシートをどうしたいのかわかりませんが、ここではアクティブなブックの一番左のシートを取得する基本をお伝えします。

[スポンサードリンク]

一番左のシートを取得するサンプルマクロ

以下のExcelマクロを実行すると、一番左のシート名がメッセージボックスに表示されます。

Sub 一番左のシートを取得してシート名を表示する()
 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です。

Sub 一番左のシート名を表示する()
 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で一番左のシートを取得する

「Sheets・Worksheet」の記事一覧

検索


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

.