0

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

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

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

但是当我这样做时,它说找不到方法或数据成员。仅当我将其替换为

… 
Debug.print Sheet1.optClicked
…

谁能告诉我为什么会发生这种情况?

4

5 回答 5

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
于 2013-02-19T00:28:58.950 回答
1
Set Page = ActiveWorkbook.Worksheets("Info") should work. I think worksheets is no real property in VBA...

此外,您的调试打印代码看起来很奇怪,请使用 debug.print("bla").. 您是否激活了 Option explicit ?

于 2013-02-18T22:07:51.730 回答
1
于 2013-02-18T22:08:10.127 回答
0

其他方法:工作表上的 ActiveX 控件可以从两个集合中访问:ShapesOLEObjects。您可以使用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
于 2013-02-19T08:26:43.057 回答
0

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

于 2013-02-18T22:04:14.640 回答