- ベストアンサー
VBA ユーザーフォームのChangeイベントを停止したい
ユーザーフォームのChangeイベントは Application.EnableEvents = Falseで停止できないのですか? シート上のChangeイベントの停止はできましたが、ユーザーフォーム上のテキストボックス等のChangeイベントは停止できませんでした。 ユーザーフォームのChangeイベントを停止する方法があれば教えてください。
- みんなの回答 (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
お礼
ユーザーフォーム上のテキストボックス全部を停止できたらと思ったのですが、だめみたいですね。上記の記述を参考にして設定したいと思います。ありがとうございました。