たくさんのシートを←→ボタンクリックで順次表示できないか?

Question 97.4 Excel VBA Borad (掲示板)より Previous Next
はじめまして。
シートが14あり、その各シートに←→ボタンを作って戻る、進むをしたいのですが良いプログラムはありますか?
各シートで戻る(進む)をマクロで記録しましたがマクロが多すぎるのか記録しきれなくなってしまいます。
よろしくお願いします。
Answer   Copyright (C) 2009.7.18 永井善王
ブック ブックのイメージは右図のようで合っていますか?

・シートの数は減らしてある
・シートの順番はシート名の小さい順とは限らない
・シート名は何でも構わない
・シート名の変更、シート数の増減は支障ない (注)
 (注) 一旦上書き保存して開き直すこと
・←→ボタンは全シートに図形で作成した
・→ボタンに下記「右矢印クリック」マクロを登録
・←    〃   「左矢印クリック」   〃
・先頭まで戻ったら末尾シートを選択する
・末尾まで進んだら先頭シートを選択する
'==============================================================================
Option Explicit
Dim テーブル()                                  'シート名を覚えておく配列
Dim 各シート                                    'Worksheetsコレクションの各シート
Dim K                                           'カウント変数
'------------------------------------------------------------------------------
Private Sub Auto_Open()                         'シート名テーブルを作る
    ReDim テーブル(Worksheets.Count)            '配列の要素数を再定義する
    K = 1
    For Each 各シート In Worksheets
        テーブル(K) = 各シート.Name             '各シートの名前を配列に設定する
        K = K + 1
    Next
End Sub
'------------------------------------------------------------------------------
Sub 右矢印クリック()
    For K = 1 To Worksheets.Count
        If テーブル(K) = ActiveSheet.Name Then '配列の値とアクティブシートの名前が同じ
            K = K + 1
            If K > Worksheets.Count Then
                Worksheets(1).Select            '先頭のシートを選択する
            Else
                Worksheets(K).Select            '1つ右のシートを選択する
            End If
        End If
    Next
End Sub
'------------------------------------------------------------------------------
Sub 左矢印クリック()
    For K = Worksheets.Count To 1 Step -1
        If テーブル(K) = ActiveSheet.Name Then
            K = K - 1
            If K = 0 Then
                Worksheets(Worksheets.Count).Select '末尾のシートを選択する
            Else
                Worksheets(K).Select            '1つ左のシートを選択する
            End If
        End If
    Next
End Sub
'==============================================================================
このマクロは標準モジュールに作成します。
Auto_Openプロシージャを使っていますから、上書き保存したら一旦閉じて、開き直す必要があります。
期待どおり動くと思いますが、結果をご連絡ください。
サンプルブックのダウンロードは ここをクリック (YNxv9236.xls 81KB)
※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。
ありがとうございます
なんとかうまくできましたm(__)m ありがとうございます。
また分からないことがあったら質問させていただきます。 よろしくお願いします。

 

Excel VBA Macro