禁用 TextInput 对象

Disable TextInput Object

我有一个 checkbox,如果 checkbox.Value = False 我想禁用我的 TextInput-Object。网上有一些建议,但是用的方法对我不起作用,因为找不到方法。

我用 .Valid 方法试过了:

Dim tf As TextInput
Dim checkbox As CheckBox

Sub checkbox_click()

Set checkbox = ActiveDocument.FormFields("checkbox").CheckBox
Set tf = ActiveDocument.FormFields("textfield").TextInput

If checkbox.Value = False

    tf.Valid = False
End If

End Sub

但由于某种原因,这不起作用。我在网上找到了tf.Enabled = False,但是这个方法在我的情况下是未知的。

虽然 Internet 可能会有帮助,但您还应该使用 VBE 中的对象浏览器和帮助。花 5 秒搜索 FormField 就能找到答案。

Dim tf As TextInput
Dim checkbox As CheckBox

Sub checkbox_click()

Set checkbox = ActiveDocument.FormFields("checkbox").CheckBox

If checkbox.Value = False
    ActiveDocument.FormFields("textfield").Enabled = False
End If

End Sub

你还需要这样的东西:

Dim ff As FormField
Dim checkbox As CheckBox
.
.
Set checkbox = ActiveDocument.FormFields("checkbox").CheckBox
Set ff = ActiveDocument.FormFields("textfield")

If checkbox.Value = False
  ff.Enabled = False
End If

对于遗留的 FormField 对象,您需要的一些属性与 FormField 本身相关联,而其他属性则与 FormField 的子对象相关联,例如 FormField.Checkbox

所以这里的问题是tf是一个FormField.TextInput对象,但是.EnabledFormField对象的属性。

与您的问题无关,但作为观察,FormFields 没有正常意义上的 VBA 事件与之关联的 Word 事件。每个字段的设置告诉 Word 运行 一个命名的 Sub “在进入时” and/or “在退出时” - 就是这样。没有实际的点击事件。使用使这些事情看起来像事件的名称没有问题,但我只是想我会提到它。