我想知道Sheet1和设置工作表之间的区别

时间:2013-02-18 21:59:44

标签: excel vba

我有一个脚本,在module1中检查是否单击了一个选项按钮。

选项按钮放在Sheet1中,名称为“Info”,所以我认为下面的脚本可以正常工作

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

但是,当我这样做时,它表示找不到方法或数据成员。它只有在我用

替换它时才有效
… 
Debug.print Sheet1.optClicked
…

任何人都可以告诉我为什么会这样吗?

5 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

此外,您的调试打印代码看起来很奇怪,使用debug.print(“bla”).. 你有Option explicit激活吗?

答案 2 :(得分:1)

尝试Set Page = Worksheets("Info")并且不要使用这些卷曲的“”引号 - 以防万一(对于Excel公式,这很重要)。

答案 3 :(得分:0)

Worksheets中的参数是您感兴趣的工作表的名称,即“Sheet1”。

答案 4 :(得分: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