【AutoHotkey】Shift+マウスホイールで横スクロールするコード

この記事では、「AutoHotkey」を使って、特定のキーを押しながらマウスホイールした時だけ、横スクロールさせるコードについて書きます。
Excelで水平スクロールしたい時に便利です。
キーに別の機能を割り当てるソフトAutoHotkeyを使うことで、Shift+マウスホイールに横スクロールを割り当てられます。
割り当てると、Shiftを押してマウスホイールを上下に回転した時に、水平スクロールできます。Excelで横に移動したい時に便利です。実際に使ってみた動画を貼っておきます。
Shiftは僕が押しやすいキーなだけで、好きなキーに変更できます。チルトホイール(ホイールを左右に動かす機能)がついていないマウスでも使えます。
スクロール量も好きなように調整できます。
前提
この記事は、既にAutoHotkeyをインストールしている前提で書きます。インストールしていないという場合は、以下の記事を参考にしてみてください。キーやマウスに別の機能を割り当てられるWindowsのフリーソフトです。
Shift+マウスホイールに横スクロールを割り当て
マウスホイールを左右に傾けられるチルトホイール付きのマウスと、非搭載マウスで書き込むコードが変わってきます。
僕は、以前までチルトホイールがあるマウスを使っていたんですが、今は搭載していないゲーミングマウスを使っています。本当は、チルトホイールがあれば完璧だったんですけどね。
チルトホイールを搭載しているマウスでのコード
コードは以下のようになっています。
;Shift+マウスホイールで水平スクロール
+WheelDown::WheelRight
+WheelUp::WheelLeft
Return
これをスクリプトに書き込んでリロードすれば機能します。
Excelだけで機能させたい場合は、以下のコードになります。
;【Excel】Shift+マウスホイールで水平スクロール
#IfWinActive ahk_exe EXCEL.EXE
+WheelDown::WheelRight
+WheelUp::WheelLeft
Return
「IfWinActive」でExcelを指定して、それ以外のアプリでは動作しないようにしています。
チルトホイールを搭載していないマウスでのコード
マウスホイールを左右に傾けれないマウスでのコードは以下になっています。僕の場合こちらですね。
そもそもチルトホイール機能がついているマウスなら、わざわざコードを書かなくても、ホイールを左右に傾ければ動くはずなので、ほとんどの人がこちらのコードになるかと思います。
;【Excel以外】Shift+マウスホイールで水平スクロール
+WheelUp:: ;Shift+マウスホイールで右に動かす
MouseGetPos,,,id, fcontrol,1
SendMessage, 0x114, 0, 0, %fcontrol%, ahk_id %id%
Return
+WheelDown:: ;Shift+マウスホイールで左に動かす
MouseGetPos,,,id, fcontrol,1
SendMessage, 0x114, 1, 0, %fcontrol%, ahk_id %id%
Return
;------------------
;Excel
;------------------
#IfWinActive ahk_exe EXCEL.EXE
;Shift+マウスホイールで水平スクロール
+WheelUp:: ;Shift+マウスホイール上
SetScrollLockState, On
SendInput {Left} ;左に横スクロール
SetScrollLockState, Off
Return
+WheelDown:: ;Shift+マウスホイール下
SetScrollLockState, On
SendInput {Right} ;右に横スクロール
SetScrollLockState, Off
Return
#IfWinActive
;------------------
;Excel終了
;------------------
Excelの時は、ScrollLock をオンにして、左右のキーを入力しているってのがポイントですね。確かに、スクロールロックかかっている時は、矢印キーで左右に移動できますもんね。考えた人天才です。(僕ではないです)
このコードは、以下のサイトを参考にさせていただきました。感謝です。
参考:AutoHotkey scrip for horizontal scrolling in excel not working for graphs Super User
コードを貼ったら、忘れずに保存してスクリプトをリロードしましょう。

あとは、スクリプトが実行している時に、実際にShift+マウスホイールを回転するだけです。上回転の時は左で、下回転の時は右に移動します。
スクロールスピードを調整する
上記で紹介したコードは、通常のスクロールスピードです。もう少し早くする…ということも可能です。
Excel以外の水平スクロールスピード調整
Excel以外の水平スクロールスピードを速くしたい人は、以下のコードになります。
;【Excel以外】Shift+マウスホイールで水平スクロール
+WheelUp::
MouseGetPos,,,id, fcontrol,1
Loop 2 ;数字を大きくするとそれだけ大きくスクロール
SendMessage, 0x114, 0, 0, %fcontrol%, ahk_id %id%
Return
+WheelDown::
MouseGetPos,,,id, fcontrol,1
Loop 2 ;数字を大きくするとそれだけ大きくスクロール
SendMessage, 0x114, 1, 0, %fcontrol%, ahk_id %id%
Return
「Loop」コマンドで、処理を指定した回数繰り返すようにしています。「2」の数字を大きくすることで、スクロールスピードを速くできます。2なら2倍、3なら3倍のスピードです。
Excelの水平スクロールスピードの調整
Excelの水平スクロールスピードを速くするコードです。
;------------------
;Excel
;------------------
#IfWinActive ahk_exe EXCEL.EXE
;Shift+マウスホイールで水平スクロール
+WheelUp::
SetScrollLockState, On
SendInput {Left 1} ;数字を大きくすると大きくスクロールする
SetScrollLockState, Off
Return
+WheelDown::
SetScrollLockState, On
SendInput {Right 1} ;数字を大きくすると大きくスクロールする
SetScrollLockState, Off
Return
#IfWinActive
;------------------
;Excel終了
;------------------
{Left 1}の部分を、 {Left 2}のように大きくすることで、スクロール量を調整できます。英語と数字の間には、半角空白があるので消さない用に気を付けてください。
感想
以上、AutoHotkeyを使って、Shift+マウスホイールに横スクロールを割り当てる方法についてでした。現在使っている「Logicool G Pro Wireless」には、チルトホイールがないので便利です。
本記事で紹介したコードを応用して、Excelだけのスクロール行数を変更する方法についても書いています。
TweetDeckでも水平スクロールができます。