- ベストアンサー
accessでイベントを中止するようなコマンドはあるのでしょうか?
accessでイベントを中止するようなコマンドはあるのでしょうか? excel vba でのenableevents=falseのようなものはあるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です > 文字を入れ替え、その入れ替えた文字を再度テキストボックスに入力したい ここでの「再度」を理解できていないのですが。 どのような記述になっているのでしょうか。 テキストボックス「txt1」に、"(1)" の入力で "第一章" に置き換えるものとした場合、 Private Sub txt1_Change() If (Me.txt1.Text = "(1)") Then Me.txt1.Text = "第一章" End If End Sub の様な記述になっていると、 Me.txt1.Text = "第一章" によって、Change イベントが発生します。 Me.txt1.Value = "第一章" または、 Me.txt1 = "第一章" とすることで、イベントを発生させずに値を代入することができます。 ただ、これをすると、更新前処理、更新後処理も発生しないことになります。 更新前処理、更新後処理も発生させつつ、2度処理しないようにする時には、 (a) フラグ制御する Dim bFound As Boolean Private Sub txt1_Change() If (Not bFound) Then If (Me.txt1.Text = "(1)") Then bFound = True Me.txt1.Text = "第一章" End If End If bFound = False End Sub フラグが立っていない時だけ、判別/処理する。 Me.txt1.Text = "第一章" をした時点で、変更時/更新前処理/更新後処理まで動き切ります。 (b) 変更時処理を一旦無しにする Private Sub txt1_Change() Dim sTmp As String If (Me.txt1.Text = "(1)") Then sTmp = Me.txt1.OnChange Me.txt1.OnChange = "" Me.txt1.Text = "第一章" Me.txt1.OnChange = sTmp End If End Sub Me.txt1.Text = "第一章" する前に、変更時イベントを受け取らないようにします。 Me.txt1.OnChange に "[Event Procedure]" や "[イベント プロシージャ]" が設定されていると、 Private Sub txt1_Change() が呼び出されます。 Me.txt1.Text = "第一章" をした時点で、更新前処理/更新後処理まで動き切ります。 動き切った時には、他へコントロールが移動しても再度イベントが発生することはありません。 Me.txt1.Text に値を代入しなかった場合は、 他のコントロールに移動した時点で、更新前処理、更新後処理が動きます(変更していたら) Me.txt1.Text への設定は、txt1へフォーカスがある時だけ有効です。 他の処理をしつつ、txt1へ代入&変更時/更新前処理/更新後処理を動かしたい時には、 例えば、ボタンがクリックされた時に Me.txt1.SetFocus Me.txt1.Text = "第二章" と記述します。 2007での動きを記述してみましたが、この内容が得たかったものなのかは?? また、他にも方法があるのかもしれません。
その他の回答 (1)
- 30246kiku
- ベストアンサー率73% (370/504)
どのようなタイミングでの使用になるのか、ご質問内容からわかりませんが、 ヘルプで以下を参照してみてください。 DoCmd.CancelEvent
お礼
changeイベントで、テキストボックスに入力された文字を確認して条件を満たせば、 文字を入れ替え、その入れ替えた文字を再度テキストボックスに入力したいのですが、 changeイベントが繰り返されてしまいます。