【VBA】特定のシートをアクティブにする

Excel VBAでは、マクロを使って任意のシートをアクティブ(表示状態)にすることが可能です。大量のシートがあるブックや、定期的に特定シートを表示したい場合に役立ちます。

本記事では、特定のシートをアクティブにする方法をサンプルコード付きで解説します。


1. 基本構文

シートをアクティブにするためには、WorksheetsコレクションやSheetsコレクションを利用します。

Worksheets("シート名").Activate

または、

Sheets("シート名").Activate

Worksheetsはワークシートのみを対象とし、Sheetsはグラフシートも含む点が異なります。通常のシートを操作する場合は、Worksheetsを使うと明示的でわかりやすいです。


2. 使用例:シート「管理」をアクティブにする

例えば、シート名が「管理」のシートをアクティブにしたい場合は以下のように記述します。

Sub ActivateDataSheet()
Worksheets("管理").Activate
End Sub

3. シートが存在しない場合のエラー対策

指定したシートが存在しないと、**実行時エラー9(インデックスが有効範囲にありません)**が発生します。これを防ぐために、シートの存在を事前に確認する処理を加えると安全です。

Sub ActivateSheetSafe()
Dim ws As Worksheet
Dim sheetName As String
sheetName = "管理"

On Error Resume Next
Set ws = Worksheets(sheetName)
On Error GoTo 0

If ws Is Nothing Then
MsgBox "シート「" & sheetName & "」は存在しません。"
Else
ws.Activate
End If
End Sub

4. シートのインデックス番号で指定する方法

シート名ではなく、シートの並び順で指定することもできます。

Worksheets(1).Activate '1番目のシートをアクティブにする

ただし、ユーザーがシートの順番を入れ替えると意図した結果にならないため、基本的にはシート名で指定する方が推奨されます。


5. まとめ

  • Worksheets("シート名").Activate で特定のシートをアクティブにできる
  • エラー対策としてシートの存在チェックを行うと安全
  • インデックス番号で指定する方法もあるが、順番が変わると不安定

コメント

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