VBA中的启用或禁用按钮

VBA中的启用或禁用按钮,vba,catia,Vba,Catia,我必须根据某些条件创建此用户表单 我希望仅当 用户选择复选标记并选择选项A或选项B,然后单击文本按钮, 仅当满足所有必要的复选标记、选项按钮和文本按钮时,才会激活“确定”按钮以单击 这是用户表单 我试着用这个代码,但OK按钮激活,如果做任何一个操作 Option Explicit Private Sub CancelBtn_Click() Unload Me End Sub Private Sub UserForm_Initialize() OkBtn.E

我必须根据某些条件创建此用户表单 我希望仅当 用户选择复选标记并选择选项A或选项B,然后单击文本按钮, 仅当满足所有必要的复选标记、选项按钮和文本按钮时,才会激活“确定”按钮以单击

这是用户表单

我试着用这个代码,但OK按钮激活,如果做任何一个操作

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”,该子项检查选项按钮中的任何一个是否也为true。如果其中一个选项为true且公共布尔值为true,则会启用“确定”按钮。只需在属性中默认禁用ok按钮。这样,您就不必在初始化事件中设置它


制作一个函数,用于检查所有条件并启用/禁用按钮,并从所有
单击
事件句柄调用它。非常感谢Simon,你的代码正常工作如果你的问题都解决了,如果你能检查答案旁边的勾号图标,让每个人都能看到这个问题解决了,那就太好了。谢谢很高兴它起作用了。