在 VBA 中启用或禁用按钮

问题描述

我必须根据某些条件创建此用户表单 我希望 OK 按钮仅在 用户选择 CHECK 标记并选择 OPTIONA 或 OPTIONB 并单击 TEXT 按钮, 只有当所有必要的复选标记、选项按钮和文本按钮都得到满足时,才会激活确定按钮以点击

这是用户表单

enter image description here

我尝试使用此代码,但如果执行任何操作,“确定”按钮就会激活

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

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

enter image description here