コンピュータや音楽の事書いてます

EXCELでブラウザの様に「戻る」「進む」する

シートがたくさんあるファイルを見てるときに、ALT + →キー、ALT + ←キー で今まで見たシートを見てきた順番に行ったり来たりできる。

ALT + F11 を押し、「ThisWorkbook」をダブルクリックし、以下を貼り付ける。

Public sheet_history As New Collection 'シート移動履歴
Public current_sheetnumber As Integer '現在の履歴位置

'キー設定解除
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.OnKey "%{left}", ""
    Application.OnKey "%{right}", ""
End Sub

'キー設定
Private Sub Workbook_Open()
    Application.OnKey "%{left}", "ThisWorkbook.back_sheet"
    Application.OnKey "%{right}", "ThisWorkbook.next_sheet"
    sheet_history.Add ActiveSheet
    current_sheetnumber = 1
End Sub
'新しく選択された
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Do While sheet_history.Count > current_sheetnumber ' 以降全部消す
        sheet_history.Remove current_sheetnumber + 1
    Loop
    
    If sheet_history.Count > 100 Then sheet_history.Remove 1 '100回まで保存 超えたら先頭を消す
    sheet_history.Add Sh
    current_sheetnumber = sheet_history.Count
End Sub
'戻る
Public Sub back_sheet()
    If current_sheetnumber < 2 Then Exit Sub
    Application.EnableEvents = False
    If Not IsNull(sheet_history(current_sheetnumber - 1)) Then sheet_history(current_sheetnumber - 1).Activate
    current_sheetnumber = current_sheetnumber - 1
    Application.EnableEvents = True
End Sub
'進む
Public Sub next_sheet()
    If current_sheetnumber = sheet_history.Count Then Exit Sub
    Application.EnableEvents = False
    If Not IsNull(sheet_history(current_sheetnumber + 1)) Then sheet_history(current_sheetnumber + 1).Activate
    current_sheetnumber = current_sheetnumber + 1
    Application.EnableEvents = True
End Sub

貼り付けたウィンドウは閉じてOK。ファイルを保存してもう一度開くと動作する。