• ベストアンサー

accessでイベントを中止するようなコマンドはあるのでしょうか?

accessでイベントを中止するようなコマンドはあるのでしょうか? excel vba でのenableevents=falseのようなものはあるのでしょうか?

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

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.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)
回答No.1

どのようなタイミングでの使用になるのか、ご質問内容からわかりませんが、 ヘルプで以下を参照してみてください。 DoCmd.CancelEvent

con014057
質問者

お礼

changeイベントで、テキストボックスに入力された文字を確認して条件を満たせば、 文字を入れ替え、その入れ替えた文字を再度テキストボックスに入力したいのですが、 changeイベントが繰り返されてしまいます。

関連するQ&A

  • アクセス イベントの発生を停止させたい

    アクセスでイベントを発生しないようにしたいのですが エクセルで使用できる、Application.EnableEvents = Falseを使うと、 コンパイルエラーになります。 フォームを指定して、 .FilterOn = True を通ると、 該当のフォームのPrivate Sub Form_Current()イベントが発生してしまうので、 Application.EnableEvents = Falseのように、イベントの発生を停止させたいです。

  • イベントを発生させたくない EnableEvent

    エクセルでは Application.EnableEvents = False で、イベントを発生させないことができますが、 アクセスで同じようにとあるときのみイベントを発生させたくない時は どうすればいいでしょうか? 上記のコードだとエラーになりました。

  • AccessからExcelのコマンドボタンイベント

    Access2003 WinXP です。宜しくお願いします。 AccessのVBAでExcelファイルをコピーしたり開いたり テキストボックスの内容を書き換えたりしています。 Excelにてコントロールツールボックスから作成したコマンドボタンがあるのですが、このボタンのクリックイベントを AccessのVBAから実行させる方法を探しています。 ちなみに訳あって標準モジュールに書かれているわけではないので マクロを呼び出す方法は不可でした;; 標準モジュールに移すのは無しの方向で どなたか分かる方いらっしゃいましたらお願いします。

  • TEXTBOX_CHANGEのイベント抑制

    TEXTBOX_CHANGE イベントでのイベント抑制方法を教えてください。 エクセルのVBAで、ユーザーフォーム内のTEXTBOXの内容を変更した際にイベントが発生しない様にしたいのですが、うまくいきません。 Private Sub TextBox1_Change() Application.EnableEvents = False UserForm1.TextBox1.Text = "" Application.EnableEvents = True UserForm1.TextBox1.SetFocus End Sub  ユーザーフォーム内では Application.EnableEvents  は使えないのかな?? どなたかご教授をお願いします。

  • コマンドボタンの自動作成

    こんにちは。 Excel2000で作業をしています。 Excel VBA を用いて、コマンドボタンを作成しようとしているのですが、うまくいきません。 試しにマクロを記録させてみたところ、 ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _ , DisplayAsIcon:=False, left:=252, top:=292.5, width:=72, height:=24) _ .Select というコードになったのですが、これを実行させてみたところ、ボタンのようなものは表示されるのですが、このボタンを右クリックしても、「プロパティ」「コードの表示」メニューが表示されず、コマンドの実行ができません。 Clickイベントを発生させて、コマンドの実行ができるコマンドボタンをVBA等で作成するためには、どのようにすればよいのでしょうか。

  • VBAでシート上のTEXTBOXの値を変更するとイベントが無限に入る。

    ExcelのVBAでシート上に貼り付けたCheckBoxで  内容を変更したくない場合、  下記のようなプログラムを作りました。 Private Sub CheckBox1_Click()     MsgBox "内容を変更しないでください"     If CheckBox1.Value = True Then       CheckBox1.Value = False     Else       CheckBox1.Value = True     End If End Sub すると、イベントが入りまくって、抜け出せなくなりました。 セルの場合は、Application.EnableEvents = False を使用してイベントを止めることができたのですが、 コントロールの場合は、そのような命令が見つかりません。 なにか良い手はないでしょうか。 よろしくお願いいたします。

  • アクセスで他アプリから復帰した場合の再描画イベント

     エクセル、アクセスでVBAを自作している者です。コーディング暦5年以上で、フォーム画面も組めるようになりました。  いまだに理解が進まないのがイベントですが、その中で質問があります。  かなり時間のかかる処理(例えば30分とか1時間とか)を行う際に、例えば100件処理ごとに「今~件処理しました。」というようなメッセージをフォーム上に表示して、経過を知らせるとともにPCが固まっていないことを確認できるようにしています。(Application.Echoを通常はFalseにして、100件ごとにEcho=Trueに直してからRepaintメソッドで書いて、再びEcho=Falseに戻しています)  しかし、これもずっとアクセスを表示したままの場合にしか動きません。処理中に別の画面(エクセルとかエクスプローラーとか)を表示して、アクセスに戻ってくると、アクセスはVB実行中で画面の再描画はしてもらえず、処理がすべて終わるまでは白い画面(何も表示されない画面)などが表示されたままになってしまいます。フォームのActivateイベントにも仕込んでみましたが、アクセスに戻っただけではActivateイベントは発生しないようです。  Applicationオブジェクトや、CurrentProjectオブジェクトにはイベントがないようで、アクセスがアクティブになった場合に、再描画させることができるのかどうか、教えていただければ幸いです。

  • Access2002のコマンドボタンについて

    Windows2000とWindowsXP上でAccess2002で作ったソフトを動かしています。 現象が絞りきれていないのですが、時々、VBAソースの一部を修正すると、 コマンドボタンのClickイベントが効かなくなります。 ソースはそのまま存在します。 困ったことに、動かなくなってから特に何も修正をしないまま、 デバッグを何度かすると元通りにイベントが発生するように戻ります。 このような場合、どのような点から原因を調査するのが良いのでしょうか? また、このような事例をご経験された方がいましたら、 アドヴァイスをお願いいたします。

  • 震災によるイベント中止

    今回の熊本地震による、イベントの中止・延期状況を知りたいです。 地元イベントなどではなく、メーカーさんが九州エリアでイベント予定だったけど中止になりました、などの情報がほしいです。

  • コマンドボタンを押すとHPにアクセスVBA

    エクセルVBAの質問です。 コマンドボタンを押すと「インターネットホームページにアクセスします、宜しいでしょうか?」とMsg Boxpが出現して「はい」を選択すると、パソコンに入ってるMozilla Firefoxでホームページ(https://www.monotaro.com/)を開くVBAは、どの様にすれば宜しいでしょうか?