2013-02-18 29 views
0

我有一塊腳本位於module1中,用於檢查是否單擊選項按鈕。我想知道Sheet1和設置工作表之間的區別

的選項按鈕被放置在Sheet1中,名稱爲「信息」,所以我想下面的腳本將工作

Sub checkClicked() 
    dim Page as worksheet 
    set Page as worksheets(「Info」) 
    Debug.print Page.optClicked 
End sub 

但是,當我做到了,這樣它說的方法或數據成員未找到。它只會工作,如果我把它取代它

… 
Debug.print Sheet1.optClicked 
… 

任何人都可以告訴我爲什麼會發生這種情況?

回答

0

工作表內的參數是您感興趣的工作表名稱,即「Sheet1」。

+0

嗨傑弗裏,我將它,所以它...設置頁=工作表(「工作表Sheet1」)......甚至 設置頁= activeworkbook.Worksheets(「工作表Sheet1」) 但它仍然不認識到, – Eddy 2013-02-18 23:48:39

1
Set Page = ActiveWorkbook.Worksheets("Info") should work. I think worksheets is no real property in VBA... 

此外,您的調試打印代碼看起來怪異,使用debug.print( 「BLA」).. 你有明確的選項激活?

+0

感謝基督徒,但你的方式仍然不適合我。我可以使用debug.print(「bla」)...以及debug.print「bla」進行調試。 humm我沒有明確地打開選項。 – Eddy 2013-02-18 23:45:27

+0

你會得到什麼樣的錯誤消息? 「信息」是否正確寫入?如果不是,請嘗試: Set Page = ActiveWorkbook.Worksheets(1)將頁面設置爲第一頁。 什麼樣的數據被激活? 在任何情況下,使用選項顯式,如果你沒有(搜索stackoverflow解釋)出現各種小錯誤 – 2013-02-19 07:20:29

1

嘗試Set Page = Worksheets("Info")並且不要使用這些捲曲「」引號 - 以防萬一(對於Excel公式這很重要)。

+0

謝謝彼得,我嘗試設置頁=工作表(「信息」),而不是設置頁作爲工作表(「信息「),但它仍然沒有optClicked數據成員 – Eddy 2013-02-18 23:39:29

2

將Sheet1視爲「工作表」的「子類」 - 將控件添加到工作表時添​​加新成員。通用工作表對象沒有代表您的選項按鈕的成員,而Sheet1則是。

Sub Test() 

    Dim sht As Worksheet 
    Dim sht1 As Sheet1 

    Set sht = ThisWorkbook.Sheets("Sheet1") 
    Set sht1 = Sheet1 

    Debug.Print sht.optClicked 'error 
    Debug.Print sht1.optClicked 'OK 

End Sub 
+0

是的!這種方式的作品,非常感謝你! – Eddy 2013-02-19 16:11:49

0

其他方法:在表中的ActiveX控件是從兩個集合訪問:形狀OLEObjects。您可以使用OLEObjects集合訪問您的複選框。

Sub checkClicked() 
    Dim Page As Worksheet 
    Set Page = Worksheets("Info") 

    ' 1/ ActiveX check box in Shapes collection 
    Dim myShape As Shape 
    Set myShape = Page.Shapes("optClicked") 
    ' -------------------------------------- 

    ' 2/ ActiveX check box in OLEObjects collection 
    Dim myOLEObject As OLEObject 
    Set myOLEObject = Page.OLEObjects("optClicked") 

    ' Use Object property to get access to your check box 
    Dim myCheckBox As Variant 
    Set myCheckBox = myOLEObject.Object 

    If (TypeOf myCheckBox Is MSForms.CheckBox) Then 
     Debug.Print myCheckBox.value 
    End If 
End Sub 
相關問題