如何正确访问Word 2013 VBA中的旧版表单域复选框?

时间:2014-11-13 07:37:05

标签: vba checkbox ms-word

来自this question我试图获取并设置传统表单字段复选框(MS Word 2013)的值 - 而不会在文档上奇怪地滚动/跳转。对于文本字段,可以通过

执行
myField = ActiveDocument.Bookmarks("myField").Range.Fields(1).Result ' get
ActiveDocument.Bookmarks("myField").Range.Fields(1).Result.Text = myValue ' set

但这对复选框不起作用。我可以采取哪些命令来相应地访问复选框而不会出现奇怪的跳转?

1 个答案:

答案 0 :(得分:1)

我对此进行了一些测试,看起来你只需使用CheckBox.Value属性来访问复选框的值而无需更改文档中的焦点。将以下代码粘贴到常规模块中,并测试这两种访问文本框值的方法之间的区别。

Public Sub TestCheckboxAccess()

    Dim ctl As FormField

    For Each ctl In ActiveDocument.FormFields

        ' Loop through check boxes in current document
        If ctl.Type = wdFieldFormCheckBox Then

            ' This does not scroll the document
            Debug.Print ctl.CheckBox.Value

            ' This does scroll the document
            'Debug.Print ctl.Result

        End If
    Next ctl
End Sub

请注意,在我的系统上,此代码示例即使不关闭ScreenUpdating也能正常工作。

尝试一下,看看它是否可能为您解决问题!