>イベントそのものを削除する
>モジュールを自分自身で消す方法は分かるのですが、イベントの場合どうやるのか
この文章の流れからするとイベントの取り消し、
すなわち入力を拒否するということですかね。
もう少し具体的に、データを入力したら指定のデータであれば
入力をはじきフォーカスをどこにおくとか、そのように説明しないと
「何のことやら」になります。
>代案の回答は結構です。
というからには、確固たる説明をする必要があると思いますが。
イベントそのものを無かったことにするのは
無理だと思いますが(イベントログの取り消し)。
擬似的にイベントを取り消し、入力したデータをはじくことは出来ます。
Undoを使います。
たとえば、商品番号に「1000」を入力したら拒否するということであれば、
Private Sub 商品番号_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 9 Or KeyCode = 13 Then
If Me!商品番号.Text = 1000 Then
Me!商品番号.Undo
Me!商品番号.SetFocus
Me!商品番号.SelStart = 0
KeyCode = 0
End If
End If
End Sub
ここで、
KeyCode = 9
はタブキー、
KeyCode = 13
はエンターキー
を表します。タブキーを入れたのは数値型だと
タブキーでそのままスルーをしてしまうので、
タブキーを使った場合も網にかけるようにしています。
なお、
If Me!商品番号.Text = 1000 Then
の、Textプロパティを省略しないように。
あるいは、KeyDown時のKeyCodeを指定せずに、
Private Sub 商品番号_KeyDown(KeyCode As Integer, Shift As Integer)
If Me!商品番号.Text = 1000 Then
Me!商品番号.Undo
Me!商品番号.SetFocus
Me!商品番号.SelStart = 0
KeyCode = 0
End If
End Sub
でもいいかもしれません。確認はしていませんが。
もし、ほかに入力をスルーする方法があるならば
このほうがいいかもしれません。
お礼
有難うございます。 リンク先n記事は存じていましたが、勝手にダメだと思い込んでいました。 普通にと言いますかやってみたらできました。