【AutoHotkey】Excelだけマウスホイールのスクロール行数を変更する方法

2021年11月7日AutoHotkey,Windows10,Windows11

AutoHotkeyのアイコン

この記事では、Excelを起動している時だけ、マウスホイールのスクロール行数を調整する方法について書きます。

【AutoHotkey】Excelだけマウスホイールのスクロール行数を変更する方法

キーに別の機能を割り当てるソフトAutoHotkeyを使えば、Excelだけマウスホイールのスクロール行数を調整できます。

ブラウザのスクロールは早いまま、Excelだけ1行スクロールにすることができます。分かりやすいように動画を貼っておきます。同じスクロール量でもExcelの方がゆっくりです。

僕は、Excelに見た映画の感想を淡々と記録しているんですが、その時のスクロール行数が多すぎて目的の場所までうまく調整できないことが多々あります。

インターネットで調べると、Excelだけじゃなくてパソコン全体のスクロール行数を変更する方法しか書いてなかったんですよね。知りたいのはそうじゃないんですよねぇ。

Windows11の設定 Bluetoothとデバイス>マウス 一度にスクロールする行数

パソコン全体のスクロール行数を1行にしたらブラウザでのスクロール量が少なすぎて、ひたすらマウスホイールを回転しないといけなくなってとても不便です。

ブラウザでは今まで通り10行~15行で一気にスクロールして、Excelだけ1行スクロールに変更したいんです!ということで、僕のブログで何回も紹介しているキーに別の機能を割り当てるソフト「AutoHotkey」を使って実現してみたいと思います。

別のキーを押している時だけ、1行スクロールにするといったこともできます。個人的には、Shift+ホイール回転で1行スクロールに切り替える方法がおすすめです。

前提

この記事では、AutoHotkeyを既にインストールしている前提で書いています。インストールしていないという方は以下の記事を参考にしてみてください。

コード

書き込むコードは以下のようになっています。

;Pauseキーでスクリプト一時停止(サスペンドモード)
Pause::Suspend

;------------------
;Excel
;------------------
#IfWinActive ahk_exe EXCEL.EXE

  ;スクロール行数の調整
  WheelUp::			;マウスホイール上回転
	  SetScrollLockState, On
	  SendInput {Up}		;1行だけスクロール
	  SetScrollLockState, Off
	Return

  WheelDown::			;マウスホイール下回転
	  SetScrollLockState, On
	  SendInput {Down}	;1行だけスクロール
	  SetScrollLockState, Off
	Return

#IfWinActive
;------------------
;Excel終了
;------------------

Excel上でマウスホイール回転すると、スクロールロックをオン→矢印キーを入力するようにしています。スクロールロックは、キーボードの矢印キーを入力するだけで、画面をスクロールできる機能です。キーボードの右上あたりにあるキーですね。

上記のコードだと1行スクロールになっています。もし2行~5行といったようにスクロールの行数を増やしたい場合は、以下のアコーディオン(↓の青い枠内)を参考にしてみてください。

「〇」に好きな半角数字を入力しましょう。入力した数字がスクロール行数です。

;Pauseキーでスクリプト一時停止(サスペンドモード)
Pause::Suspend

;------------------
;Excel
;------------------
#IfWinActive ahk_exe EXCEL.EXE

  ;スクロール行数の調整
  WheelUp::			;マウスホイール上回転
	  SetScrollLockState, On
	  SendInput {Up 〇}		;〇行だけスクロール
	  SetScrollLockState, Off
	Return

  WheelDown::			;マウスホイール下回転
	  SetScrollLockState, On
	  SendInput {Down 〇}	;〇行だけスクロール
	  SetScrollLockState, Off
	Return

#IfWinActive
;------------------
;Excel終了
;------------------

例えば、3行なら{Up 3}といったようになります。Up・Downと数字の間には、半角空白があるので消さないように注意してください。

コードの解説

僕が分かる範囲の意味を書いておきます。これが分かるようになれば、自分で好きなようにキーを変えたりできます。

コード意味
Pause::SuspendPauseキーを押すと、一時的にスクリプトが停止する。普通のスクロールをしたい時用に設定しておくと便利。
;スクロール行数の調整ただのコメントアウト。自分の分かりやすいように変更してOK
ただし、セミコロン記号(;)は消さないように。
IfWinActive ahk_exe EXCEL.EXEExcelが起動している時だけ発動
WheelUp::マウスホイール上回転
SetScrollLockState, Onキーボードのスクロールロックをオン
SendInput {Up}上矢印キーを入力
SetScrollLockState, Offキーボードのスクロールロックをオフ
WheelDown::マウスホイール下回転

サスペンドモードの切り替えキーを設定しておくと、いざという時に普通のスクロールもできます。普通のスクロールをしたい時はサスペンドモード、1行スクロールにしたい時は、サスペンドモード解除って感じで使い分けられます。

サスペンドモードの時は、タスクトレイのアイコンが「S」になります。

AutoHotkey サスペンドモード時のタスクトレイアイコン

上記コードを実行している時と、実行していない時の動画を貼っておきます。歴然の違いです。今までよく頑張ってな…僕。

Shift+マウスホイールに1行スクロール

上記コードだと、後述するデメリットの壁にぶち当たります。そこで、通常は普通のスクロールにして、Shiftを押している時だけ1行スクロールにするコードを紹介します。僕は、こちらの方を利用しています。

;------------------
;Excel
;------------------
#IfWinActive ahk_exe EXCEL.EXE

  ;スクロール行数の調整
  +WheelUp::			;Shift+マウスホイール上回転
	  SetScrollLockState, On
	  SendInput {Up}	;1行だけスクロール
	  SetScrollLockState, Off
	Return

  +WheelDown::			;Shift+マウスホイール下回転
	  SetScrollLockState, On
	  SendInput {Down}	;1行だけスクロール
	  SetScrollLockState, Off
	Return

#IfWinActive
;------------------
;Excel終了
;------------------

これで普通のスクロールもできるし、いざという時は、Shiftを押しながら1行スクロールできます。

このコードのデメリット

このコードには明確デメリットが1点、少し気になることが1点あります。

フォント選択のスクロールができない

上記で紹介したコードは、Excel 上でマウスのスクロールをした時に必ずスクロールロックが発動します。

これにより、フォント選択などのポップアップメニューに対しては、うまい具合にスクロールされません。スクロールしても、前後のフォントを行ったり来たりするだけです。

対策としては、フォント選択画面の右側にあるスクロールバーを活用するのが有効です。

Scroll Lockが邪魔

Excelではスクロールロックをオンにすると、左下に「Scroll Lock」と表示されます。スクロールをするたびに、スクロールロックのオンオフを切り替えるので、この表示がちらつきます。

Excelのステータスバー

対策としてはステータスバー(Scroll Lockと表示されている部分)を右クリック→Scroll Lockのチェックを外すと非表示にできます。

ステータスバーの右クリックメニュー ScrollLockのチェックを外す

感想

以上、AutoHotkeyを使って、Excelだけでのマウスホイールのスクロール行数を調整する方法についてでした。

結構便利です。似たような方法で、Shift+マウスホイール回転で横(水平)スクロールする方法についても書いています。気になったら見てみてください。

Posted by ナポリタン寿司