MS-Access マウスホイールイベント

マウスのホイールでフォームのレコードをスクロールできないようにする方法 (Microsoft)
マウスのホイールでフォームのレコードをスクロールできないようにする方法 (Microsoft)
アクセスのフォームでマウスのホイールをまわした時のイベントを拾う方法。
1つめがAccess 97、2つ目がAccess 2000を対象とした説明。


要約すると、標準のフォームでは、ホイールをまわした時にイベントを拾えないので、Win32APIを使って、フォームをサブクラス化。フォームで発生したマウスのホイールのメッセージを取得できるようにする。

方法としては2種類。VBかVCを使って、サブクラス化するActiveX DLLを作成し、Access からDLLを参照する。もう一つは、DLLを使用せず、Access 内にすべてのコードを記載する。

Microsoft Office Visual Basic Editor 読み込み後の、ウィンドウのサブクラス化には問題があるため、マイクロソフトは、Microsoft Visual Basic または Microsoft Visual C++ を使用して ActiveX DLL を作成し、Microsoft Access アプリケーションから DLL を参照する方法を強く推奨します。

http://support.microsoft.com/kb/278379/ja

ただし、上記のようにVBEのバグ(?)のため、ActiveX DLLを使う方がよい。でも、ActiveX DLLって扱うの面倒だった気が…(他環境に導入時とか)。
まぁ、VBEを開いた後にフォームを表示すると固まるだけなので、VBAの編集とフォームの表示・編集を切り替ええる時に一度 Access を閉じて開きなおせばよい。(デバッグできなかったり不便ですが)


DLL作ってちゃんとWikiにまとめよっと…。作っておけば今後でも使えるだろうし