5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

エクセルのシート切り替えのショートカットキーをシンプル(Ctrl+jとCtrl+k)にできたお話

Last updated at Posted at 2015-03-03

お知らせ

最終的にマウスの進む・戻るボタンにシート切り替えを割り当てるのが
私に最も最適な設定でした。詳細は下記を参照似ていただきたく。
http://exsoul.hatenablog.com/entry/2015/03/11/002825

背景

エクセルのシート切り替えのショートカットキーはCtrl+PgUp or PgDn ですが、
ノートPCだったりするとFnキー押さないといけなかったり、そもそもキー配置的に押しにくいです(個人的感想)
なので、簡単に押せるショートカットにしたいと思い経ちました。

環境

Windows7
Excel2010

想定していた解決案

  • ショートカットキーの変更(最もシンプル)
  • 任意のソフトにおけるショートカットキーバインドの変更
  • エクセルマクロ(最終手段)

結論

エクセルマクロで実現しました。

ただし、実際に編集、作成するエクセルにマクロを組み込むことは可能な限り避けたかったので、
個人用マクロブックというものを使用しました。

個人用マクロブックとは

自身の環境でエクセルを作成・編集する場合のみに適用されるマクロを記述するため専用の
エクセルブックのことです。
これを使用することで、たとえ通常マクロ実行不可のxlsx拡張子のエクセルでもマクロが実行できます。
(セキュリティの設定によるかもしれません)

実施した内容

  • エクセルを起動
  • リボンのウインドウタブ > 再表示 で PERSONAL.XLSB を選択
  • 開発タブよりVB編集画面を開き、上記のブックに標準モジュールを追加
  • 標準モジュールに以下を追記
Sub NextSheetActive()
    Set SH = ActiveSheet
    On Error Resume Next
    ''右のシートへ。末尾なら最初に
    If ActiveSheet.Name = Sheets(Sheets.Count).Name Then
        Sheets(1).Activate
    Else
        ''非表示のシートは飛ばす
        Do While SH.Next.Visible <> xlSheetVisible
            If Err <> 0 Then Exit Do
            Set SH = SH.Next
        Loop
            If SH.Next.Visible <> xlSheetVisible And SH.Next.Name = Sheets(Sheets.Count).Name Then
                Sheets(1).Activate
            Else
                SH.Next.Activate
            End If
        On Error GoTo 0
    End If
End Sub

Sub PreviousSheetActive()
    Set SH = ActiveSheet
    On Error Resume Next
     ''左のシートへ。最初なら末尾に
    If ActiveSheet.Name = Sheets(1).Name Then
        Sheets(Sheets.Count).Activate
    Else
        ''非表示のシートは飛ばす
        Do While SH.Previous.Visible <> xlSheetVisible
            If Err <> 0 Then Exit Do
            Set SH = SH.Previous
        Loop
            If SH.Previous.Visible <> xlSheetVisible And SH.Previous.Name = Sheets(1).Name Then
                Sheets(Sheets.Count).Activate
            Else
                SH.Previous.Activate
            End If
        On Error GoTo 0
    End If
End Sub
  • 開発タブ > マクロ で作成した2つのマクロにショートカットを割り当てる

私はCtrl+jとCtrl+kを設定しました。
Ctrl+kは既存でリンクの作成が割りあたっていますが今まで使ったこともないショートカットキーなので
迷わず上書きです。

  • 表示されていたPERSONAL.XLSBを保存し非表示に戻す。
  • エクセルを閉じる(PERSONAL.XLSBについてのメッセージがでてくるはず)

感想

すこぶる楽になりました。
あのわずらわしかったシート切り替えがホームポジション上でできるようになりました。
既存のエクセルでも使用できますし、作成エクセルにマクロも残らないので影響もありません。
大満足です。

補足

マクロのショートカットはCtrl(+Shift)+英数字しか割り当てられません。
VBでショートカット登録をコーディングすればAltなども使えるようになるみたいです。
私も最初はAlt+jを想定していました。
が、VBでの追加が必要なことと、Altキーがエクセルのキー操作のホットキーになっているのでやめました。

参考にさせて頂いたサイト

http://kokodane.com/macro10.htm
https://support.office.com/ja-jp/article/Excel-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88-%E3%82%AD%E3%83%BC-6a4319ef-8ea9-45d1-bd98-f238bf953ba6?ui=ja-JP&rs=ja-JP&ad=JP
http://www.moug.net/tech/exvba/0040030.html

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?