【问题标题】: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 对象,而.EnabledFormField 对象的一个​​属性。

    与您的问题无关,但仅作为观察,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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多