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

2021年11月6日AutoHotkey

AutoHotkeyのアイコン

この記事では、「AutoHotkey」を使って、特定のキーを押しながらマウスホイールした時だけ、横スクロールさせるコードについて書きます。

Excelで水平スクロールしたい時に便利です。

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

キーに別の機能を割り当てるソフト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+マウスホイールで水平スクロールするコード

あとは、スクリプトが実行している時に、実際に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でも水平スクロールができます。

Posted by ナポリタン寿司