【问题标题】:Disable TextInput Object禁用 TextInput 对象
【发布时间】:2020-10-21 17:46:34
【问题描述】:
我有一个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,但在我的情况下这种方法是未知的。
【问题讨论】:
标签:
vba
ms-word
textinput
disabled-input
【解决方案1】:
你需要更多这样的东西:
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 对象,而.Enabled 是FormField 对象的一个属性。
与您的问题无关,但仅作为观察,FormFields 没有正常意义上的 VBA 事件与之关联的 Word 事件。每个字段的设置告诉 Word 在“进入”和/或“退出”时运行一个命名的 Sub - 就是这样。没有实际的点击事件。使用使这些事情看起来像事件的名称没有问题,但我只是想我会提到它。
【解决方案2】:
虽然互联网可能会有所帮助,但您还应该使用 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