• ベストアンサー

VBA ユーザーフォームのChangeイベントを停止したい

ユーザーフォームのChangeイベントは Application.EnableEvents = Falseで停止できないのですか? シート上のChangeイベントの停止はできましたが、ユーザーフォーム上のテキストボックス等のChangeイベントは停止できませんでした。 ユーザーフォームのChangeイベントを停止する方法があれば教えてください。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

こんにちは。 > Application.EnableEvents = Falseで停止できないのですか? できません。あくまで、Application(Excel)のイベントに対するモノであり、 OLE オブジェクトであるフォームのイベントまでは制御できません。 > ユーザーフォームのChangeイベントを停止する方法があれば教えてください。 イベントの実行可否フラグを用意する方法があります。イベントの発生 自体は抑止できませんが、フラグが立っていなければイベント内の処理を キャンセルすることで事実上、イベントを抑止したことになります。 新規 Userform に CheckBox1 と TextBox1 を配置して、下記ソースを 貼り付け、動作確認してみて下さい。 Private fEnableEvents As Boolean Private Sub UserForm_Initialize()   With Me.CheckBox1     .Value = True     .Caption = "Enable Events"   End With End Sub Private Sub CheckBox1_Change()   fEnableEvents = CBool(Me.CheckBox1.Value) End Sub Private Sub TextBox1_Change()   If fEnableEvents Then     MsgBox "Raise Change Event."   End If End Sub

nihonjinn
質問者

お礼

ユーザーフォーム上のテキストボックス全部を停止できたらと思ったのですが、だめみたいですね。上記の記述を参考にして設定したいと思います。ありがとうございました。

関連するQ&A

専門家に質問してみよう