Access:フォームでマウスのホイール操作を無効にして意図しないレコード移動を回避する方法

Access:フォームでマウスのホイール操作を無効にして意図しないレコード移動を回避する方法

Accessのフォームでマウスのホイールを無効にするための設定手順について覚書。

Accessのフォームでデータを編集している時などにマウスのホイールを回してしまうと意図せず次のレコードに移動してしまったり、選択したコンボボックスの値が変わってしまったりしまいます。

特にレコードの編集中だとホイールによるレコード移動が発生すると編集中のレコードを更新されてしまいます。

マウスのホイール操作による意図しない動作を抑止するためにホイールによるレコード移動機能自体を無効にしてしまう方法についての覚書です。

マウスホイールによるレコード移動の無効化方法について

Microsoftの技術情報にフォームでマウスホイールを無効にする方法がアップされていたのでこの記事でその方法をもう少し詳しく記述します。

この記事で紹介する方法は、Microsoftの技術情報で紹介されているVisual Basic の ActiveX DLL を使用する方法ではなく、Microsoft Access のみを使用してMouseWheelイベントを作成する方法について説明します。

Microsoftの技術情報

「[ACC2000] マウスのホイールでフォームのレコードをスクロールできないようにする方法」

マウスホイールによるレコード移動の無効化方法

これから紹介する方法を試す前に必ずデータベースファイルのバックアップを取っておいてください。

紹介する手順を間違った場合、最悪ハングアップ(実際にはハングアップではない)して強制終了しないとならなくなります。

以下にマウスホイールによるレコード移動の無効化する手順を記載します。

  1. [ツール]メニューをクリックし、[マクロ]をポイントし、[Visual Basic Editor]をクリックする。
    Accessでフォームでマウスのホイール操作を無効にする方法
  2. [Visual Basic Editor]画面が開くので、[挿入]メニューをクリックし、[クラスモジュール]をクリックする。
    Accessでフォームでマウスのホイール操作を無効にする方法
  3. 新規のクラスモジュール(class1)が開くので、以下のコードをコピーして貼り付ける。

  4. Accessでフォームでマウスのホイール操作を無効にする方法

  5. 貼り付けたら[ファイル]メニューの[XXXの上書き保存](XXXは、データベース名)をクリックし、クラスモジュールを保存する。

    この際以下のようなクラスモジュール名を入力する[名前を付けて保存]ダイアログボックスが表示されるので「CMouseWheel」と入力して[OK]ボタンをクリックする。
    Accessでフォームでマウスのホイール操作を無効にする方法

  6. 次に[挿入]メニューをクリックし、[標準モジュール]をクリックする。
  7. 新規の標準モジュール(Module1)が開くので、以下のコードを貼り付ける。
  8. Accessでフォームでマウスのホイール操作を無効にする方法

  9. 貼り付けたら[ファイル]メニューの[XXXの上書き保存](XXXは、データベース名)をクリックし、標準モジュールを保存する。

    この際以下のような標準モジュール名を入力する[名前を付けて保存]ダイアログボックスが表示されるので「basSubClassWindow」と入力して[OK]ボタンをクリックする。
    Accessでフォームでマウスのホイール操作を無効にする方法

  10. 次にマウスのホイールを無効にしたいフォームをデザインで開く。
    (例としてAccessに付属されているサンプルデータベース”Northwind.mdb”の[商品リスト]フォームを使用)
  11. [商品リスト]フォームがアクティブになっている状態でメニューバーの[表示]を選択し、[コード]をクリックする。
  12. [商品リスト]フォームのコード画面が開くので以下のコードを貼り付ける。
  13. Accessでフォームでマウスのホイール操作を無効にする方法

  14. フォームを上書き保存して閉じる。
    注意:ここでフォームをフォームビューで開かないこと!
  15. Accessを終了する。

Accessを再度起動し、[商品リスト]フォームのマウスホイール操作が無効になっていることを確認してください。