[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
こんばんは若槻です。きりちゃんのところにぽんと投下してきた
VBAの修正版が出来たから載っけてみます。
「Access VBA マウスホイール制御」
○やりたいこと
→フォームでマウスホイールをするとレコードが移動してしまうので
それをなくす
○ソース
Dim bbb As Integer
'=============================================
' フォームの読み込み時
'=============================================
Private Sub Form_Load()
bbb = 0
End Sub
☆やっていること
フォームの読み込み時に変数bbbに0を入れる
'=============================================
'レコード移動時
'=============================================
Private Sub Form_Current()
If Me.NewRecord Then Exit Sub
Me.[コントロール名].SetFocus
Me.Dirty = True
End Sub
☆やっていること
レコード移動時の処理。
1.次のレコードが新しいレコードの時は作用しない
2.どれでもいいからコントロールを選んでおく。これを選ばないとエラーになる
3.「Dirty」はカレントレコードの変更の有無を表す。今はTrueなので変更有り
→変更有り=更新前処理が入る
'=============================================
' マウスホイールを動かした時
'=============================================
Private Sub Form_MouseWheel(ByVal Page As Boolean, ByVal Count As Long)
bbb = Count
End Sub
☆やっていること
マウスホイールが動かされたらbbbにCountの値を入れる
(Countの値=ホイールされて動こうとしているレコードの数)
'=============================================
' レコードに変更があった時
'=============================================
Private Sub Form_BeforeUpdate(Cancel As Integer)
If bbb <> 0 Then
Cancel = True
bbb = 0
End If
End Sub
☆やっていること
bbbの値が0でない時にCancelをTrueにして処理をキャンセルする。
※1ここでキャンセルされると移動もキャンセルになる
※2判断は必ず「0でない」にする。bbbの値はマイナス値にもなる
※3bbbの値を初期化しておく
(上のレコード移動時の処理を超えると自動的に入ってくる)
=======================
◎修正前
→前回はString型で文字を入れる感じでやっていたのですが、
思いっきりホイールすると動いてしまったので数値型にしました。
(きりちゃん報告。自分で確認しろよって話ですね分かりまs)
細かい原理は理解しきれてませんが多分一気にやるとどっかしらで
値が入らなくなるんだと思います。
というわけで数値型でFA。
※注意※
上のソースは若槻が触る分には特に問題はありませんでしたが、
プログラムによっては不具合を起こす可能性、動作しない可能性も
あります。その場合にこちらで責任を取ることは出来ませんので
ご了承ください。
以下拍手返信です。
サイト拍手含め名無しの拍手の方々もありがとうございます!