excel vba userform enableevents

如下所示,我在Office Excel 2013中遇到Excel VBA UserForm事件问题

  1. 简单的用户表单带有三个checkbox(CB1,2,3)和两个buttonCancel和OK
  2. 检查CB1时CB3 = false
  3. 检查CB2时,设置CB3 = false
  4. 检查CB3时,CB1 = false,CB2 = false

我已经阅读并了解http://www.cpearson.com/excel/SuppressChangeInForms.htm有关的用户窗体事件的抑制和分开它的作品…

在上面的2.和3.上面的列表中,在代码中正确工作(如下所示),并且CB3没有事件被触发。 然而,当我做4.检查CB3 – 它会触发CB1和CB2的事件,即使我已经设置它不会触发事件。

任何帮助感激地收到,

最好的祝福

SEAN

码:

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 

这对我很好。 If事件正在进行中,则“ If退出。 意识到EnableEventsvariables本身不做任何事情来防止事件发生。 这只是你创build的一个布尔值。 在允许事件发生之前,您需要检查它是否执行任何操作。

 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