Excel VBA ComboBox1\u下拉按钮单击事件
我得到一个宏,在它下面激发两次(两次显示相同的MessageBox)。第一个是ComboBox1打开时,第二个是Combox1关闭时Excel VBA ComboBox1\u下拉按钮单击事件,vba,excel,Vba,Excel,我得到一个宏,在它下面激发两次(两次显示相同的MessageBox)。第一个是ComboBox1打开时,第二个是Combox1关闭时 Private Sub ComboBox1_DropButtonClick() If Me.ComboBox2.Text = "" Then MsgBox "Fill text box" Else 'Do stuff End If End Sub 有没有办法让它只显示一次MessageBox。我希望用户在单击ComboBox2 DropButton之前先选
Private Sub ComboBox1_DropButtonClick()
If Me.ComboBox2.Text = "" Then
MsgBox "Fill text box"
Else
'Do stuff
End If
End Sub
有没有办法让它只显示一次MessageBox。我希望用户在单击ComboBox2 DropButton之前先选择ComboBox1中的值。我会使用combobox\u enter事件来完成此操作,但这仅在焦点切换时进行检查
Private Sub ComboBox1_Change()
If ComboBox1.Text = "" Then
ComboBox2.ShowDropButtonWhen = fmShowDropButtonWhenNever
Else
ComboBox2.ShowDropButtonWhen = fmShowDropButtonWhenAlways
End If
End Sub
Private Sub ComboBox2_Enter()
If ComboBox1.Text = "" Then
MsgBox "Must first set value to combobox1"
ComboBox1.SetFocus
End If
End Sub
Private Sub UserForm_Initialize()
ComboBox1.AddItem "None", 0
ComboBox1.AddItem "Select Me", 1
ComboBox2.AddItem "None", 0
ComboBox2.AddItem "Select Me", 1
ComboBox2.ShowDropButtonWhen = fmShowDropButtonWhenNever
End Sub
我的代码做了一些额外的事情,我只是觉得看起来很漂亮,你真的只需要_Enter函数这里有一个非常不公平的解决方法,使用“count”变量只在第一次而不是第二次提示MsgBox
Dim count As Integer
Private Sub ComboBox1_DropButtonClick()
count = count + 1
If Me.ComboBox2.Text = "" Then
If count = 1 Then
MsgBox "Fill text box"
Else
count = 0
End If
Else
'Do stuff
End If
End Sub
但是,如果不需要使用下拉按钮,我强烈建议使用ComboBox1\u Change()
事件
注意:“count”变量的声明需要在方法之外。这是因为:
- 如果它留在内部,则它是方法的局部变量,因此每次方法结束时都会丢失其修改李>
- 如果它停留在外部,即使方法结束运行,它也会保留修改