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
で特定のシートをアクティブにできる- エラー対策としてシートの存在チェックを行うと安全
- インデックス番号で指定する方法もあるが、順番が変わると不安定
コメント