Excelで作業中に「今いるシートの前(または次)のシート」に切り替えたい場合、VBAを使えばワンタッチで実現できます。特に複数シートを頻繁に移動する作業で効率化に役立ちます。
本記事では、現在のシートから前後のシートへ順番に切り替える方法をサンプルコード付きで解説します。
1. 基本的な考え方
Excelのシートには「インデックス番号(順番)」があります。
Worksheets(1)
… 先頭のシートWorksheets(Worksheets.Count)
… 最後のシート
現在のシートのインデックスを取得し、それを基準に +1
または -1
することで前後のシートを取得できます。
2. 使用例:次のシートに移動する
現在アクティブなシートの 次のシート をアクティブにする例です。
Sub ActivateNextSheet()
Dim idx As Long
idx = ActiveSheet.Index '現在のシート番号
If idx < Worksheets.Count Then
Worksheets(idx + 1).Activate
Else
MsgBox "これ以上、次のシートはありません。"
End If
End Sub
3. 使用例:前のシートに移動する
現在アクティブなシートの 前のシート をアクティブにする例です。
Sub ActivatePreviousSheet()
Dim idx As Long
idx = ActiveSheet.Index '現在のシート番号
If idx > 1 Then
Worksheets(idx - 1).Activate
Else
MsgBox "これ以上、前のシートはありません。"
End If
End Sub
4. 先頭や最後に到達した場合のループ移動
前後のシートに移動するとき、先頭や最後のシートに到達したら「循環」させたい場合は以下のように書きます。
Sub ActivateNextSheetLoop()
Dim idx As Long
idx = ActiveSheet.Index
If idx = Worksheets.Count Then
Worksheets(1).Activate '最後の次は先頭
Else
Worksheets(idx + 1).Activate
End If
End Sub
5. まとめ
ActiveSheet.Index
を基準に+1
/-1
で前後のシートを取得- シートの最初・最後を超えないよう条件分岐が必要
- 循環移動も簡単に実装可能
これで、前後のシート移動をVBAで自動化できます。
コメント