• ベストアンサー

アクセス2003でマウスホイールを無効にする方法

アクセスでマウスホイールを無効にする方法として下記のサイトに記載されている方法で やってみましたが、エラーが出てアクセスが終了してしまいます。 http://www.fivestar.jp/blogn/blognplus/index.php?e=75 http://www.accessclub.jp/bbs2/0027/beginter08905.html 上記サイトは共にアクセス2000での内容なのですが、2003だとエラーになるなんてことが ありますか? もし、2000と2003で違いがあるとすればどこを修正すれば良いでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

>上記サイトは共にアクセス2000での内容なのですが、2003だとエラーになるなんてことがありますか? あります。 一部のオブジェクトの名称が変更されたので、2000用に書かれたコードは2003だとコンパイルエラーになります。 http://technet.microsoft.com/ja-jp/library/cc179105(v=office.12).aspx に「相違点のごく一部」が載ってますが、ぶっちゃけ「2000と2003は、まったくの別物」と思った方が良いです。

sou-kana
質問者

お礼

ご回答頂き、ありがとうございます。 「相違点のごく一部」を確認いたしましたが、結局、コードのどの部分を修正すれば、エラーがなくなるのかわかりませんでした。 アクセス2003でフォームを開いているときにマウスホイールを無効にするにはどうすればよいでしょうか?

sou-kana
質問者

補足

他のサイトでの書き込みを元にサイド検証したところ解決しました。 原因は (1)モジュール1の中に、各フォームのコードに書くべきコードまで書いてしまっていた。 (2)各フォームのコードに書くべきコードをコードの先頭ではなく、末尾に書いていた。 (3)アクセスを閉じる前にモジュールを選択せずに閉じていた。 でした。 原因となったコードは下記のコードです。 Private WithEvents clsMouseWheel As CMouseWheel Private Sub Form_Load() Set clsMouseWheel = New CMouseWheel Set clsMouseWheel.Form = Me clsMouseWheel.SubClassHookForm End Sub Private Sub Form_Close() clsMouseWheel.SubClassUnHookForm Set clsMouseWheel.Form = Nothing Set clsMouseWheel = Nothing End Sub Private Sub clsMouseWheel_MouseWheel(Cancel As Integer) 'MsgBoxがいらなければ以下の行を削除します。 MsgBox "マウスホイール使用不可" Cancel = True End Sub 「Private WithEvents clsMouseWheel As CMouseWheel」を使う場合、他の「private sub ~」のコード が書かれている部分よりも書かないとエラーになるということを知りませんでした。 また、モジュールを選択して、アクセスを閉じないとモジュールが有効に起動しないことも知りませんでした。 今回は勉強になりました。

関連するQ&A