我有一个脚本,在module1中检查是否单击了一个选项按钮。
选项按钮放在Sheet1中,名称为“Info”,所以我认为下面的脚本可以正常工作
Sub checkClicked()
dim Page as worksheet
set Page as worksheets(“Info”)
Debug.print Page.optClicked
End sub
但是,当我这样做时,它表示找不到方法或数据成员。它只有在我用
替换它时才有效…
Debug.print Sheet1.optClicked
…
任何人都可以告诉我为什么会这样吗?
答案 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