2013-02-18 27 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 
相关问题