在Excel中,我有一个带有两个OptionButton的UserForm。如果用户在Option1上轻按,则应检查条件,并在满足条件的情况下选择Option1,应取消选择Option2,并应执行CommandButton2_Click功能。
如果用户单击Option2,则应该相反。
如果不满足条件,则在所有情况下都不会发生任何事情。条件取决于是/否用户输入。
我无法实现此行为。当前,我使用“ OptionButton2_BeforeUpdate”-方法。我希望通过此条件先检查条件,以防万一,然后更改OptionButtons Selection。但是,看起来似乎在BeforeUpdate-Method开始之前先更改选择状态。
Private Sub OptionButton2_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If MsgBox("Achtung, durch Wechsel der Getriebeart wird die Auswahl zurückgesetzt! Trotzdem wechseln?", vbYesNo + vbQuestion, "Auswahl zurücksetzen?") = vbYes Then
CommandButton2_Click
Else
Cancel = True
End If
End Sub
Private Sub OptionButton1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If MsgBox("Achtung, durch Wechsel der Getriebeart wird die Auswahl zurückgesetzt! Trotzdem wechseln?", vbYesNo + vbQuestion, "Auswahl zurücksetzen?") = vbYes Then
CommandButton2_Click
Else
Cancel = True
End If
End Sub
答案 0 :(得分:0)
仅需要if语句来根据您的条件决定是否选中此复选框:
Private Sub OptionButton1_Click() 'note that this is in the click, you don't need beforeupdate
If MsgBox("Achtung, durch Wechsel der Getriebeart wird die Auswahl zurückgesetzt! Trotzdem wechseln?", vbYesNo + vbQuestion, "Auswahl zurücksetzen?") = vbYes Then
Me.OptionButton1.Value = True
Else
Me.OptionButton1.Value = False
End If
End Sub
编辑:包含了您实际的msgbox if语句。
编辑:
为什么不使用以下内容:
Public mark As String
Private Sub UserForm_Initialize()
mark = MsgBox("Achtung, durch Wechsel der Getriebeart wird die Auswahl zurückgesetzt! Trotzdem wechseln?", vbYesNo + vbQuestion, "Auswahl zurücksetzen?")
End Sub
然后,在选项按钮上使用“标记”,这样,在选项按钮单击时,您可能会选择是/否:
Select Case mark
Case vbYes
Me.OptionButton1.Value = True
Me.OptionButton2.Value = False
Case vbNo
Me.OptionButton1.Value = False
Me.OptionButton2.Value = True
End Select
答案 1 :(得分:0)
我不确定您其余的代码是什么,但是我只是根据需要设置按钮的值?
希望这会有所帮助,或者至少会让您对下一步有所了解。
Private Sub OptionButton1_Click()
If MsgBox("Achtung, durch Wechsel der Getriebeart wird die Auswahl zurückgesetzt! Trotzdem wechseln?", vbYesNo + vbQuestion, "Auswahl zurücksetzen?") = vbYes Then
CommandButton2_Click
Me.OptionButton2.Value = False
Else
Me.OptionButton1.Value = False
End If
End Sub
Private Sub OptionButton2_Click()
If MsgBox("Achtung, durch Wechsel der Getriebeart wird die Auswahl zurückgesetzt! Trotzdem wechseln?", vbYesNo + vbQuestion, "Auswahl zurücksetzen?") = vbYes Then
CommandButton2_Click
Me.OptionButton1.Value = False
Else
Me.OptionButton2.Value = False
End If
End Sub
答案 2 :(得分:0)
我找到了可行的解决方案。不好,但是可以满足我的要求。
Public Mark As Integer
Private Sub OptionButton1_Click()
If Mark = 1 Then
Mark = 0
Else
If MsgBox("Achtung, durch Wechsel der Getriebeart wird die Auswahl zurückgesetzt! Trotzdem wechseln?", vbYesNo + vbQuestion, "Auswahl zurücksetzen?") = vbYes Then
CommandButton2_Click
OptionButton1.Value = True
Else
Mark = 1
OptionButton2.Value = True
End If
End If
End Sub
Private Sub OptionButton2_Click()
If Mark = 1 Then
Mark = 0
Else
If MsgBox("Achtung, durch Wechsel der Getriebeart wird die Auswahl zurückgesetzt! Trotzdem wechseln?", vbYesNo + vbQuestion, "Auswahl zurücksetzen?") = vbYes Then
CommandButton2_Click
OptionButton2.Value = True
Else
Mark = 1
OptionButton1.Value = True
End If
End If
End Sub