2013-12-19 45 views
0

我有一個簡單的小工具來設置一個複選框(放置在工作表上),具體取決於工作表是否受到保護。更改複選框的值時,'變量未定義'錯誤。

chkToggleProtect絕對存在的,通過我得到在任一線路的編譯錯誤,在這裏我引用它 - 沒有定義

任何想法,我做錯了

變量?

Private Sub SetToggleProtect(ByRef isprotected As Boolean) 

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

End Sub 
+0

這是一個'Forms'複選框或者一個'Controls'複選框? – Manhattan

+0

這是一個「表格」複選框 –

+1

我的回答如下。只需正確分配'cb.Name'即可。 ;) – Manhattan

回答

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 

相應修改,以適應。

+0

謝謝,這確實做的工作。 –

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 
+0

+1自己得到答案。 ;) – Manhattan

+0

:)直到現在,直到現在,我從來沒有真正'得到'即時窗口,幾乎專門用於'Debug.Print'。希望那個壞小子能夠在未來爲我節省很多麻煩! –