Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 还原ChkBoxGroup\u Click事件中的复选框值_Vba_Checkbox_Click_Revert - Fatal编程技术网

Vba 还原ChkBoxGroup\u Click事件中的复选框值

Vba 还原ChkBoxGroup\u Click事件中的复选框值,vba,checkbox,click,revert,Vba,Checkbox,Click,Revert,我创建了多个复选框,我想在用户单击复选框时提示他们。他们只能使用正确的PIN更改复选框的值。如果输入的PIN不正确,复选框将恢复为原始值。 但是,每次尝试还原复选框值时,它似乎会递归调用ChkBoxGroup_Click()事件,直到输入正确的密码 Private Sub ChkBoxGroup_Click() Dim ValidatePIN_RNT As Boolean ValidatePIN_RNT = ValidatePIN() If Not ValidatePI

我创建了多个复选框,我想在用户单击复选框时提示他们。他们只能使用正确的PIN更改复选框的值。如果输入的PIN不正确,复选框将恢复为原始值。 但是,每次尝试还原复选框值时,它似乎会递归调用ChkBoxGroup_Click()事件,直到输入正确的密码

Private Sub ChkBoxGroup_Click()
    Dim ValidatePIN_RNT As Boolean

    ValidatePIN_RNT = ValidatePIN()
    If Not ValidatePIN_RNT Then
        ChkBoxGroup.Value = Not ChkBoxGroup.Value
        Exit Sub
    End If
End Sub

现在也可以了!我在excelforum.com上找到一篇文章,指出application.enable events设置仅控制工作簿和工作表事件。从帖子中,它建议使用全局变量。这对我有用

现在也能用了!我在excelforum.com上找到一篇文章,指出application.enable events设置仅控制工作簿和工作表事件。从帖子中,它建议使用全局变量。这对我有用

ChkBoxGroup.Value=Not ChkBoxGroup.Value
之前设置
Application.EnableEvents=False
,并在进行更改后将其更改回
TRUE
。顺便说一句,如果您从代码中删除
Exit Sub
行,会发生什么?谢谢您回复我。我在ChkBoxGroup.Value之前添加了Application.EnableEvents=False,但它仍然不起作用。(在输入正确的PIN之前仍然递归进行。)并且删除退出子节点不会改变任何事情。它仍然绕过“如果结束”直接跳转到ChkBoxGroup_change()事件,然后转到ChkBoxGroup_Click事件。私有子ChkBoxGroup_Change()'不执行任何操作。'如果nRevert=True,则ChkBoxGroup.Value=Not ChkBoxGroup.Value'Debug.Print“ChkBoxGroup\u Change”End Sub Private Sub ChkBoxGroup\u Click()Dim ValidatePIN\u RNT作为布尔ValidatePIN\u RNT=ValidatePIN()如果未验证,则Application.EnableEvents=False ChkBoxGroup.Value=Not ChkBoxGroup.Value‘如果结束子否,则退出子结束’。删除(或添加)退出子项不会改变任何东西,因为它位于子项的末尾。但是,
ChkBoxGroup
是什么动物?如果是一组相关复选框,则无法设置其
值。相反,您应该捕获组中任何一个复选框的更改,并将其值返回给与用户所做的相反的值。考虑使用<代码>应用程序。撤消<代码>代码,但请使用<代码>应用程序.EnabeEvase= false <代码>以确保宏的更改不会再次触发相同事件。在<代码> CHKBOXGROUP.Value=不CHKBOXGROUP .Value之前,设置<代码> EnabeEvs= false >代码>并将其更改为<代码>真< /代码>。已经做出了改变。顺便说一句,如果您从代码中删除
Exit Sub
行,会发生什么?谢谢您回复我。我在ChkBoxGroup.Value之前添加了Application.EnableEvents=False,但它仍然不起作用。(在输入正确的PIN之前仍然递归进行。)并且删除退出子节点不会改变任何事情。它仍然绕过“如果结束”直接跳转到ChkBoxGroup_change()事件,然后转到ChkBoxGroup_Click事件。私有子ChkBoxGroup_Change()'不执行任何操作。'如果nRevert=True,则ChkBoxGroup.Value=Not ChkBoxGroup.Value'Debug.Print“ChkBoxGroup\u Change”End Sub Private Sub ChkBoxGroup\u Click()Dim ValidatePIN\u RNT作为布尔ValidatePIN\u RNT=ValidatePIN()如果未验证,则Application.EnableEvents=False ChkBoxGroup.Value=Not ChkBoxGroup.Value‘如果结束子否,则退出子结束’。删除(或添加)退出子项
不会改变任何东西,因为它位于子项的末尾。但是,
ChkBoxGroup
是什么动物?如果是一组相关复选框,则无法设置其
值。相反,您应该捕获组中任何一个复选框的更改,并将其值返回给与用户所做的相反的值。考虑使用<代码>应用程序。撤消< /代码>,但请使用<代码> Aptudio.EnabeEvs= false < /Cord>以确保宏所做的更改不会再次触发相同的事件。