英文:
VBA needed for checking a specific check box based on text box result
问题
在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
我感谢任何建议。
英文:
Working in Word 2010, I need VBA code for a form that will check one of two ActiveX check boxes based on text set to populate into an ActiveX text field. (Male or Female) I'm a novice and have tried various variations of the code below:
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
I appreciate any suggestions.
答案1
得分: 0
你已经相当接近了。不需要在变量值周围添加括号。需要记住的是匹配必须精确,所以我添加了一个部分,如果文本字段稍微不同,就将两个复选框都设置为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
英文:
You're pretty close. No brackets needed around the variable values. Something to keep in mind is that the match has to be exact, so I added a section to set both checkboxes to false if the text field is anything slightly different.
Using With/End With is always a good way to eliminate extra code and make your macro run just a little faster:
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
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论