【エクセルマクロ】シート移動をショートカット1発で行うする方法

仕事でExcelを使っているが、もっと早く作業ができるようになりたい。

エクセル時短術の書籍を読んだが自分のやりたいことが実現できない。

こんな悩みを抱えていないでしょうか?

この記事ではシートの移動をショートカット1発で実現する方法を解説します。

基本的にExcel VBAを使っていきますが、ソースコードはすべて掲載し、改造のポイントも記載していこうと思います。

この記事はこんな人におすすめ!
  • エクセル作業を時短したい
  • エクセルマクロを自分で作りたい
  • 「シート移動」をキーボード1タッチだけで実現したい

第3回目は「シート移動」を1タッチで実現するマクロを作成します。

あび先輩

環境はWindows10、Microsoft Excel 2016で作成、動作確認しています。

さぁどうぞ!

目次

「シート移動」で実現できること

シートの多いエクセルで目的のシートを探すのに苦労していませんか?

マウスでカチカチ、なかなか辿り着かない。同じような名前のシートで目がチカチカする。

シート移動がめんどくさい

こんなストレスを解消するためにキーボード1タッチで最初のシートへ移動、最後のシートに移動、シート名検索をできる方法を紹介します。

メニューに「開発」が表示されてない場合は、第1回の「ExcelBAを使う準備」を参照してください。

また、合わせて【新発想】ちりつもエクセル時短術② 1タッチ罫線もご覧ください。

マクロの記録

それではマクロの記録をしていきます。

メニューの「開発」 > 「マクロの記録」をクリック。

マクロの記録ウィンドウが表示されたら、マクロ名、マクロの保存先、説明を入力し「OK」ボタンをクリックします。

今回は後ほどコードを書き換えますので、ショートカットキーは入力しなくて良いです。

マクロの記録
  • マクロ名    :英字か数字で入力します。ただし先頭は英字のみ有効です。
  • マクロの保存先 :すべてのエクセルで使えるようにするため、個人用マクロブックを選択します。
  • 説明      :入力しなくても良いですが、律儀な方は入力してください。

これでマクロの記録が開始されたため、シート移動を操作します。

最後のシートを選択→最初のシートを選択。

操作し終わったら「記録終了」をクリックします。

マクロの作成

「開発」 > 「Visual Basic」をクリックします。

[Alt] + [F11] キーでもOKです。

マクロの整形

VBAのウィンドウが表示されたら、「VBAProject(PERSONAL.XLSB)」配下の標準モジュール > 「Module1」をクリックします。
※過去にマクロの記録をしたことがある場合、「Module2」や「Module3」になっている可能性があります。

右側にソースが表示されますので、不要な部分を削除したり、追加のコーディングをします。

今回も、マクロの記録で生成されたコードは内容を理解するために使用します。

マクロサンプル

シートの選択は、Sheets(“シート名”).Selectとコーディングすれば良いことがわかります。

しかし、エクセルによってシート名は様々なため、シート名を固定にするわけにはいきません。

こういうときは、ネットで調べます。
「エクセル マクロ シート選択」とかで検索すると出てくると思います。

結果、Sheets(1).Selectとコーディングすれば最初のシートが選択できることがわかります。

次に最後のシートを選択する場合ですが、最後のシートは数字がわかりません。
ということで、ネットで調べます。
「エクセル マクロ 最後のシート選択」とかで良いと思います。

結果、Sheets(Sheets.Count).Selectとコーディングすれば最後のシートが選択できることがわかります。

ここで、この2つをサブルーチン化します。

Sub MoveFirstSheet()
    
    On Error Resume Next
    
    Sheets(1).Select            '先頭シートを選択
    
End Sub

Sub MoveLastSheet()
    
    On Error Resume Next
    
    Sheets(Sheets.Count).Select '最終シートを選択
    
End Sub

シート名検索については少し複雑になりますので、実際のコーディングを見ながらポイントを解説します。

Sub SearchSheet()

    Dim inti            As Integer  '親ルールの添字
    Dim intj            As Integer  '子ループの添字
    Dim strMsg          As String   'メッセージ
    Dim strSearchString As String   '検索文字列
    Dim intSearchLen    As Integer  '検索文字列の文字数
    Dim intSheetLen     As Integer  'シート名の文字数
    Dim intStartPoint   As Integer  '検索開始位置
    
    On Error Resume Next
    
    strMsg = "シート名を入力してください(部分一致)"             'メッセージを退避
    strSearchString = InputBox(strMsg)                          '検索文字入力
    
    If Trim(strSearchString) = "" Then Exit Sub                 '検索文字列なしの場合終了する
    
    intSearchLen = Len(strSearchString)                         '検索文字列の文字数を取得
    
    For inti = 1 To Sheets.Count                                '全シート分ループする
        intSheetLen = Len(Sheets(inti).Name)                    'シート名を取得
        
        If intSearchLen <= intSheetLen Then                     '検索文字数 <= シート名文字数の場合
            For intj = 1 To (intSheetLen - intSearchLen) + 1    '検索回数分ループ
                If strSearchString = Mid(Sheets(inti).Name, _
                intj, intSearchLen) Then                        '検索文字列とシート名を比較
                    Sheets(inti).Activate                       '一致したら、そのシートを選択
                    Exit Sub                                    'サブルーチンを抜ける
                End If
            Next intj
        End If
    Next inti
                
    MsgBox "一致するシートはありませんでした。"           'メッセージを表示する

End Sub
あび先輩

以下はソースの解説です。ソース上緑色のコメントで十分説明できている部分の解説は省略します。

14行目 strSearchString = InputBox(strMsg)

検索文字列を入力し、変数strSearchStringに格納します。

InputBox
20行目~32行目

全シート分の検索文字列とシート名を比較するために1~シート数合計までループします。

24行目~30行目

該当シート(Sheets(inti).Name)に対して検索文字列と部分的に一致するか比較を行い、一致した場合は該当シートを選択状態にし、サブルーチンを終了します。
部分的に一致するか比較をするために、シート名から検索文字列と同じ文字数を切り出し比較をしています。

Mid関数は Mid(文字列, 開始位置, 文字数)という構成で、開始位置から文字数分を切り出します。

   最後まで一致しない場合は、20行目に戻ったときにintiに1加算され次のシートが対象となります。

ショートカットキーの割当

最後にショートカットキーを割り当てます。

ツールバーから「開発」 > 「マクロ」をクリック。

マクロウィンドウが表示されるため、「マクロの保存先(A)」に「PERSONAL.XLSB」を選択し、「オプション(O)」ボタンをクリックします。

あび先輩

マクロの保存先は「PERSONAL.XLSB」を選択しましょう。これで全てのブックでマクロが有効になります!

ショートカットキー割当

ショートカットキーとして割り当てたい文字を入力し、「OK」ボタンをクリックします。

あび先輩

[Ctrl] + [何かのキー]だと、すでに割当たっている可能性が高いため、[Ctrl] + [Shift] + [何かのキー]にすることをおすすめします。

下図の場合[Shift]キーを押しながら[A]を入力します。

ショートカットキー割当2

同様に、下罫線、右罫線、左罫線もショートカットキーを割り当てていきます。

ショートカットキー罫線の方向
[Ctrl] + [Shift] + [A]最初のシートに移動
[Ctrl] + [Shift] + [Z]最後のシートに移動
[Ctrl] + [Shift] + [S]シート名検索
ショートカットキー

マクロウィンドウが残っているため、「キャンセル」ボタンをクリックします。

まとめ

これですべての工程が完了となります。

割り当てたショートカットキーを押してシートの移動をしてみてください。

シート数が多いエクセルを多用する場合は時短の効果が出るはずです。

1回1回の時間はわずかですが、塵も積もれば山となるで繰り返す内に効果を実感すると思います。

この記事を書いた人
あび先輩
  • ITエンジニア歴22年(現役)
  • プロジェクトマネージャー兼エンジニア採用担当
  • 副業としてネットショップコンサル
  • タイムマネジメント、習慣化を研究
  • 本業も副業も100%力を発揮できるための情報を発信
  • 輝くエンジニアを増やしたい

Twitter : (@evolution_avi

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!

コメント

コメントする

目次
閉じる