Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » VBAで最後のシートを選択する

VBAで最後のシートを選択する


動作検証バージョン:Windows 11 Home + 64bit Excel バージョン 2506(ビルド18925.20168クイック実行)

「マクロ 最後のシートを選択」
といった検索キーワードでアクセスがありました。

それほど難しいマクロではありませんが、最後のシートが非表示である可能性を考えておく必要があります。

[スポンサードリンク]

aiに最後のシートを選択するExcelマクロを作ってもらったら

各種無料aiに、
「最後のシートを選択するexcelマクロを作ってもらえますか」
に依頼したところ、それぞれ以下のようなコードを生成してくれました。

Geminiが生成してくれたのは以下のコードです。

ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Select

Claudeの場合は以下のコードです。

Worksheets(Worksheets.Count).Select

基本的には動くコードなのですが、最後のシートが非表示のときには、実行時エラーが発生してしまいます。

最後のシートを選択するサンプルマクロ

最後のシートが非表示のときにも実行時エラーが発生しないようにするなら、以下のようなExcelマクロです。

Sub 最後のシートを選択する()

 Dim i As Long
 For i = Sheets.Count To 1 Step -1
  If Sheets(i).Visible Then
   Sheets(i).Select
   Exit Sub
  End If
 Next

End Sub

サンプルマクロで行っている処理

Sheets.Countで取得できるシート枚数から、カウンター変数が「1」になるまで、「Step -1」を指定してFor~Nextループを回して、

 Dim i As Long
 For i = Sheets.Count To 1 Step -1

シートが表示されていたら、選択して、Subプロシージャを抜けています。

  If Sheets(i).Visible Then
   Sheets(i).Select
   Exit Sub

aiの回答

ちなみに、先ほどのコードを教えてくれたGeminiやClaudeに、
「これでは、最後のシート非表示のときにエラーになりませんか」
と指摘すると、上記のような「Step -1」のFor~Nextループを使ったコードを生成してくれました。

また、ChatrGPTの場合は、「Sheets(Sheets.Count).Select」を使ったコードを生成した直後に「応用例(シートが非表示でないものを選ぶ)」として、以下のようなコードを生成してくれました。

Sub SelectLastVisibleSheet()
    Dim i As Long
    For i = Sheets.Count To 1 Step -1
        If Sheets(i).Visible = xlSheetVisible Then
            Sheets(i).Select
            Exit Sub
        End If
    Next i
End Sub

Activateメソッドなら非表示でもOKだが…

ここまでお伝えしたとおり、

Sheets(Sheets.Count).Select

では、最後のシートが非表示のときに実行時エラーが発生しますが、以下のようにActivateメソッドを使うと、

Sheets(Sheets.Count).Activate

実行時エラーが発生することなく、表示されている最後シートが選択されます。

最終更新日時:2025-08-06 15:54

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » VBAで最後のシートを選択する

「Sheets・Worksheet」の記事一覧

検索


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

.