gpt4 book ai didi

Excel VBA 复选框单击和更改事件相同吗?

转载 作者:行者123 更新时间:2023-12-02 10:49:32 28 4
gpt4 key购买 nike

我有 5 个复选框来设置宏的一些选项,其中之一是全选/取消全选复选框。当您选择要删除的邮件或标记为已读等时,我想创建类似于基于网络的邮箱的内容。当我选中“全选/取消全选”复选框时,我会将其余复选框的值设置为 true,反之亦然。没关系。

当我还想验证是否所有内容都未选中并且我一一选中其他复选框时,问题就出现了,如果最后我选中了所有复选框,则“全选/取消全选”复选框将变为选中状态。反之亦然,这意味着如果所有内容都已选中,然后我取消选中其他四个之一,则我将“全部”复选框设置为 false(未选中)。

但似乎即使我只是在 SelectAllCheckbox_Click 事件中设置值(例如 Option1Checkbox.value = True),它也会触发 Option1Checkbox_Click 和 Option1Checkbox_Change 事件。

因为我实际上并没有单击该复选框,难道它不应该触发 Change 事件吗?

发生的情况是,我选中了 SelectAll,因此它会将 Option1 变为选中状态,但是通过这样做,Option1 也会触发单击事件,因此它会取消选中它,从而再次触发单击事件,然后再次取消选中结束时一切都不受控制,就像开始时一样。希望这部分足够清楚。

如何避免这种行为?如何确保仅触发 Change 事件而不触发 Click 事件?

有人曾经有过这样的复选框排列并遇到过类似的问题吗?或者你是如何在没有出现我所遇到的行为的情况下做到这一点的?

复选框不在表单上,​​而只是在工作表上。它们是 ActiveX 控件。我所拥有的并不复杂:

Private Sub SelectAll_Click()
Option1Checkbox.Value = SelectAll.Value
Option2Checkbox.Value = SelectAll.Value
Option3Checkbox.Value = SelectAll.Value
Option4Checkbox.Value = SelectAll.Value
End Sub

然后选项复选框点击事件如下所示:

Private Sub Option1Checkbox_Click()
If Option1Checkbox.Value = True And Option2Checkbox.Value = True And Option3Checkbox.Value = True And Option4Checkbox.Value = True Then
SelectAll.Value = True
Else
SelectAll.Value = False
End If
End Sub

这很简单,我看到的最大问题是当复选框没有实际单击时对单击事件的调用。

感谢您的帮助。

最佳答案

我会定义一个局部变量(在子变量之外定义的变量)并设置/检查

Option Explicit
Dim ImChangingStuff As Boolean

Private Sub SelectAll_Click()
ImChangingStuff = True
Option1Checkbox.Value = SelectAll.Value
Option2Checkbox.Value = SelectAll.Value
Option3Checkbox.Value = SelectAll.Value
Option4Checkbox.Value = SelectAll.Value
ImChangingStuff = False
End Sub

那么你的点击例程将如下所示:

Private Sub Option1Checkbox_Click()
If ImChangingStuff Then Exit Sub
If Option1Checkbox.Value = True And Option2Checkbox.Value = True And Option3Checkbox.Value = True And Option4Checkbox.Value = True Then
SelectAll.Value = True
Else
SelectAll.Value = False
End If
End Sub

关于Excel VBA 复选框单击和更改事件相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18124853/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com