システムメンテナンスのお知らせ

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

gooドクター

A 回答 (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
    • good
    • 4
この回答へのお礼

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

お礼日時:2008/09/24 13:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング