更改复选框的值时,“变量未定义”错误。

时间:2013-12-19 10:39:45

标签: vba variables excel-vba excel-2007 excel

我有一个简单的Sub来设置一个复选框(放在工作表上),具体取决于工作表是否受到保护。

chkToggleProtect绝对存在,因为我在引用它的任一行上都出现了编译错误 -

  

未定义变量

任何想法我做错了什么?

Private Sub SetToggleProtect(ByRef isprotected As Boolean)

    If isprotected Then
        chkToggleProtect.Checked = True
    Else
        chkToggleProtect.Checked = False
    End If

End Sub

2 个答案:

答案 0 :(得分:1)

原因正是抛出的错误:就该子而言,该变量不存在。请记住完全符合所有条件。

如果这是Forms复选框,则以下内容将起作用:

Private Sub CheckACheckbox(isProtected As Boolean)
    Dim cb As CheckBox
    If cb.Name = "ModifyMe" Then
        If isProtected Then
            cb.Value = True
        Else
            cb.Value = False
        End If
    End If
End Sub

相应修改以适应。

答案 1 :(得分:1)

所以在使用立即窗口(我的新朋友)的一些giggery-pokery之后,我发现我可以像这样访问工作表上的Forms控件 -

Private Sub SetToggleProtect(ByRef IsProtected As Boolean)

    If IsProtected Then
        WS.Shapes("chkToggleProtect").ControlFormat.Value = xlOn
    Else
        WS.Shapes("chkToggleProtect").ControlFormat.Value = xlOff
    End If

End Sub