Checkbox 基于文本框结果选中特定复选框所需的VBA

Checkbox 基于文本框结果选中特定复选框所需的VBA,checkbox,ms-word,textfield,activexobject,Checkbox,Ms Word,Textfield,Activexobject,在Word 2010中工作时,我需要一个窗体的VBA代码,该窗体将根据要填充到ActiveX文本字段的文本集选中两个ActiveX复选框之一。(男性或女性)我是一名新手,尝试过以下代码的各种变体: Sub copyMaleFemale() Dim ff As String ff = CurrentFormField.Result If ff = ("Male") Then ActiveDocument.FormFields("Check1").Result = Checked Active

在Word 2010中工作时,我需要一个窗体的VBA代码,该窗体将根据要填充到ActiveX文本字段的文本集选中两个ActiveX复选框之一。(男性或女性)我是一名新手,尝试过以下代码的各种变体:

Sub copyMaleFemale()
Dim ff As String
ff = CurrentFormField.Result

If ff = ("Male") Then 
ActiveDocument.FormFields("Check1").Result = Checked 
ActiveDocument.FormFields("Check2").Result = Unchecked

ElseIf ff = ("Female") Then
ActiveDocument.FormFields("Check1").Result = Checked
ActiveDocument.FormFields("Check2").Result = Unchecked

End If

End Sub

谢谢你的建议。

你很接近了。变量值周围不需要括号。需要记住的是,匹配必须是精确的,因此我添加了一个部分,以便在文本字段稍有不同时将两个复选框设置为false

使用With/End With始终是消除额外代码并使宏运行更快的好方法:

Sub copyMaleFemale()
    Dim ff As String
    ff = ActiveDocument.FormFields("Text1").result

    If ff = "male" Then
        With ActiveDocument
            .FormFields("Check1").CheckBox.value = True
            .FormFields("Check2").CheckBox.value = False
        End With
    ElseIf ff = "female" Then
        With ActiveDocument
            .FormFields("Check1").CheckBox.value = True
            .FormFields("Check2").CheckBox.value = False
        End With
    Else
        With ActiveDocument
            .FormFields("Check1").CheckBox.value = False
            .FormFields("Check2").CheckBox.value = False
        End With
    End If
End Sub

您在问题描述中说ActiveX,但代码用于表单字段。你到底在用什么?当你说“表单”时,你是指用户表单(对话框)还是文档是表单?您是否使用任何形式的保护?代码以什么方式“不工作”?我在ElseIf语句中颠倒了True/False(这在我的原始消息中是不正确的)。运行良好。。