1

次のように、Office Excel 2013 の Excel VBA UserForm イベントに問題があります。

  1. 3 つのチェック ボックス (CB1、2、3) と 2 つのボタン [キャンセル] と [OK] を備えたシンプルなユーザー フォーム
  2. CB1 セット CB3 = false をチェックする場合
  3. CB2 セット CB3 = false をチェックする場合
  4. CB3 セット CB1 = false および CB2 = false をチェックする場合

UserForm イベントの抑制に関してhttp://www.cpearson.com/excel/SuppressChangeInForms.htmを読んで理解しました。一部は機能します...

上記のリストの 2. と 3. はコード (以下に示す) で正しく動作し、CB3 ではイベントは発生しません。ただし、4. CB3 を確認すると、イベントを発生させないように設定していても、CB1 と CB2 のイベントが発生します。

ありがたく受け取ったどんな助けも、

よろしくお願いします

ショーン

コード:

Public EnableEvents As Boolean
Private Sub UserForm_Initialize()

    Me.EnableEvents = True

End Sub

Private Sub vboInputsSelected_Click()

    Me.EnableEvents = False
    vboPracticesSelected.value = False           'this line does NOT fire an event
    Me.EnableEvents = True

End Sub

Private Sub vboOutputsSelected_Click()

    Me.EnableEvents = False
    vboPracticesSelected.value = False           'this line does NOT fire an event
    Me.EnableEvents = True

End Sub

Private Sub vboPracticesSelected_Click()

    Me.EnableEvents = False
    vboInputsSelected.value = False           'this line DOES fire an event
    vboOutputsSelected.value = False          'this line DOES fire an event
    Me.EnableEvents = True

End Sub
4

2 に答える 2

2

これは私にとってはうまくいきます。イベントが進行中のIf場合、ベイルアウトします。EnableEvents変数自体は、イベントを防ぐために何もしないことに注意してください。それはあなたが作成した単なるブール値です。イベントの発生を許可する前に、何かを行うためにチェックする必要があります。

Public EnableEvents As Boolean

Private Sub vboInputsSelected_Click()
  If Not EnableEvents Then Exit Sub

  Me.EnableEvents = False
  vboPracticesSelected.Value = False
  Me.EnableEvents = True
End Sub

Private Sub vboOutputsSelected_Click()
  If Not EnableEvents Then Exit Sub

  Me.EnableEvents = False
  vboPracticesSelected.Value = False
  Me.EnableEvents = True
End Sub

Private Sub vboPracticesSelected_Click()
  If Not EnableEvents Then Exit Sub

  Me.EnableEvents = False
  vboInputsSelected.Value = False
  vboOutputsSelected.Value = False
  Me.EnableEvents = True
End Sub
于 2013-10-27T14:07:01.993 に答える