【问题标题】:Word - how to uncheck checkboxes?Word - 如何取消选中复选框?
【发布时间】:2015-12-09 23:58:43
【问题描述】:

我有 4 个复选框,但我们需要将选择限制为一个,这意味着如果您选中第一个,其他 3 个将不被选中。我知道我们可以使用 ActiveX 单选按钮,但如果可能,我们更愿意避免使用 ActiveX,加上复选框,我们可以更好地控制布局。

我已将复选框的名称适当地设置为Check1

然后我将这个非常基本的脚本放入 Visual Basic 部分:

Private Sub Check1_Click() Check1.Enabled = True Check2.Enabled = False Check3.Enabled = False Check4.Enabled = False End Sub

但不幸的是,选中第一个框并不会取消选中接下来的 3 个。

有什么想法吗?谢谢!

【问题讨论】:

    标签: vba checkbox ms-word


    【解决方案1】:

    如果这些是内容控件,如您所指出的,那么它们没有 CLICK 事件。 VBA 也不能通过它们的 Title 属性来识别它们。您向我们展示的代码是针对您说不想使用的 ActiveX 控件的...

    使用内容控件事件并不像使用 ActiveX 控件那么简单和直观。与表单域类似,内容控件只有在用户进入和退出内容控件时触发的“编辑”事件。这些事件在文档类别中的 ThisDocument 模块中可用。

    文档中的所有内容控件都会触发相同的 ContentControlOnExit 事件,因此您需要一个 Select Case 或 If 条件来查询 ContentControl 参数,以便了解退出了哪个内容控件。

    为了处理其他复选框,您需要使用 Document.SelectContentControlsByTitle(或 ...ByTag)方法,该方法返回具有该标题(或标签)的所有内容控件的数组。

    如果您真的想模拟“点击”事件,那么您需要在文档中插入一个自定义 XML 部件,其中的节点链接到内容控件。当用户更改控件的状态时,ContentControlBeforeStoreUpdate 事件将触发,让您采取行动。

    【讨论】:

      【解决方案2】:

      您需要的属性是Value,而不是Enabled。 属性Enabled 的目的是防止用户更改控件。

      此外,您需要防止它发生级联事件。这意味着当您以编程方式更改Check2 的值时,这将触发Private Sub Check2_Click() 等等。

      为了让它工作,你应该像这样改变你的代码:

      Private Sub Check1_Click()
          If Check1.Value Then
              Check1.Value = True
              Check2.Value = False
              Check3.Value = False
              Check4.Value = False
          End If
      End Sub
      

      对于其他复选框也是如此。


      出于您的目的,单选按钮将是更好的选择。单选按钮具有内置功能,如果选中了其他按钮,则可以取消选中当前选中的按钮。

      【讨论】:

      • 谢谢!我刚刚更新到.Value,但不幸的是仍然遇到同样的问题(即当我选中复选框时没有任何反应) - 我非常热衷于使用单选按钮,但除了使用单选按钮之外不知道如何使用它们ActiveX 控件不允许我更改它的布局(即直接在左侧的单选按钮) - 我正在编辑其他人的表单,不幸的是它需要看起来相同。
      • @Nick 你有其他事件处理程序来操作复选框吗?当您检查它们时,它们最初是否启用?此外,您需要为每个复选框添加一个类似的处理程序。
      • @Nick 我已经编辑了我的答案。您的问题是由事件级联引起的。我认为这是 VBA 中的一个错误 - 您的复选框有 Click 事件(不是 Change),并且每次更改控件的值时都不应该触发它们,但不幸的是它们是。
      • 谢谢,@A.S.H 不,这是我唯一的代码:i.imgur.com/3ulLc5r.png
      • @mielk 谢谢你,不幸的是当我点击复选框时我仍然没有得到任何东西:(
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-16
      • 2014-05-23
      相关资源
      最近更新 更多