首页 > 解决方案 > 根据文本框结果检查特定复选框所需的 VBA

问题描述

在 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

我很感激任何建议。

标签: checkboxms-wordtextfieldactivexobject

解决方案


你很接近。变量值周围不需要括号。需要记住的是匹配必须是准确的,所以我添加了一个部分来将两个复选框都设置为 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

推荐阅读