2026年11月3日 指示する

VBAでListBox、ComboBox、Frameのマウスホイールをオンにする方法

VBA は、ListBox、ComboBox、Frame、および UserForm のマウス ホイールをサポートしていません。 SonVuDev の VBA 用 MouseWheel は、たった 1 つの .bas ファイルと 2 行のコードで解決し、Excel、Access、Word、PowerPoint で実行できます。

この記事は現在、ベトナム語と英語でのみ利用可能です。英語版を表示しています。

Excel、Access、Word、または PowerPoint で VBA マクロを作成しているときに、ListBox / ComboBox / Frame マウス ホイールではなくキーでスクロールすることがわかりますか? これはソフトウェアのバグではなく、VBA の過去の制限です。 SonVuDev の

MouseWheel for VBA は、1 .bas ファイルと 2 行のコード だけでこの問題を解決します。 MSForms ライブラリは不要で、任意の VBA ホスト上で実行でき、64 ビットと 32 ビットの両方の Office をサポートします。

VBA はマウス ホイールでスクロールできないのはなぜですか?

VBA は .NET や WinForms ではありません。VBA は古いプログラミング言語であり、Office に深く統合されています。 ListBox、ComboBox、Frame などのコントロールには、WM_MOUSEWHEEL イベントをキャッチするために使用できるメッセージ ループがありません。 スクロールすると、Windows はそのメッセージを親ウィンドウ (ユーザー フォーム) に送信しますが、VBA はそのメッセージを子コントロールに転送しません。

結果: スクロール バーを手でドラッグするか、矢印キーを使用する必要があります。リストが長い場合は非常に不便です。

VBA でマウス ホイールをオンにする方法

  1. ダウンロードSonVuDev からの MouseWheel.bas
  2. ファイル .ba のインポート s を VBA プロジェクトに追加します (Alt+F11 → File → Import File)。
  3. イベント UserForm_Initialize に、次の 2 行を追加します。
    Call MouseWheelEnable(Me)
    Call MouseWheelConfigure(Me, 3, True)
  4. フォームの実行 - マウス ホイールは機能します。

機能

結論

MouseWheel for VBA は、コンパクトで依存関係のない、統合が容易なソリューションです。 VBA を作成していて、フォームをマウスでスクロールできるようにしたい場合、これは適切なツールです。