根据多个条件启用或禁用按钮

Enable or disable button based on multiple conditions

我有一个用户表单。

我希望 OK 按钮仅在用户选择 CHECK 标记、选择 OPTIONA 或 OPTIONB 并单击 TEXT 按钮时启用。

用户表单

我试过这段代码,但如果我执行任何一项操作,“确定”按钮就会激活。

Option Explicit

Private Sub CancelBtn_Click()
    Unload Me
End Sub

Private Sub UserForm_Initialize()
    OkBtn.Enabled = False
End Sub

Private Sub Option1_Click()
    If Option1.Enabled = True Then
        OkBtn.Enabled = True
    End If
End Sub

Private Sub CheckBox1_Click()
    If CheckBox1.Enabled = True Then
        OkBtn.Enabled = True
    End If
End Sub

Private Sub TextEntry_Change()
    If TextEntry.Enabled = False Then
        OkBtn.Enabled = False
    Else: TextEntry.Enabled = True
        OkBtn.Enabled = True
    End If
End Sub
 
Private Sub TextBtn_Click()
    TextEntry.Text = "TEXT"
End Sub

Private Sub OkBtn_Click()  
    MsgBox " i am enabled"
End Sub

将此代码合并到您的表单中:

Public TextPressed As Boolean

Private Sub Option1_Click()
    Call EnableOKBtn
End Sub

Private Sub Option2_Click()
    Call EnableOKBtn
End Sub

Private Sub TextBtn_Click()
    Me.TextEntry.Text = "TEXT"
    TextPressed = True
    Call EnableOKBtn
End Sub

Sub EnableOKBtn()
    If TextPressed = True Then
        If Me.Option1 = True Or Me.Option2 = True Then
            Me.OKBtn.Enabled = True
        End If
    End If
End Sub

基本上它只是使用一个 public 布尔值来判断文本按钮是否被按下。发生这种情况时,值会变为 true。然后调用单独的子“EnableOKBtn”,它检查任一选项按钮是否也为真。如果其中一个选项为真且 public 布尔值为真,则它会启用确定按钮。只需在其属性中默认禁用您的确定按钮即可。这样你就不必在初始化事件中设置它。