通过工作表variables引用activeX控件(vba)

我正在尝试将工作表分配给一个variables,然后使用该工作表上的控件。 我真的很困惑,为什么参考名称variables上的控件不会工作,当我可以从表号。

Sub SheetNames() Dim i As Integer Dim pres As Worksheet Call NumSheets Set pres = Sheets("Presentation") 'Sheet18 (assignment works) Sheet18.lbSheets.Clear 'This works pres.lbSheets.Clear 'This fails (method or data member not found) End Sub 

Worksheet对象是一个通用的“模板”对象types,它只具有适用于所有Worksheet对象的“开箱即用”属性。 您的具体工作表Sheet18添加了控件,这些控件现在是工作表对象模型的一部分,但它们属于通用Worksheet类的一部分: Worksheet在更像是Worksheet的特定“子类”,因此您无法声明它作为Worksheet ,仍然通过该参考访问控制。

但是,您可以将其声明As Sheet18 (该特定工作表的“子类”):

 Sub Tester() Dim sht As Worksheet Dim sht2 As Sheet18 Set sht = Sheet18 Debug.Print sht.lbSheets.ListCount '<< nope - compile error because the ' Worksheet class has no ' "lbSheets" member Set sht2 = Sheet18 Debug.Print sht2.lbSheets.ListCount '<< OK! 'but you may as well skip the variable and just use Debug.Print Sheet18.lbSheets.ListCount 'this also works if you know the sheet name and the control name Set sht = ThisWorkbook.Sheets("Presentation") Debug.Print sht.OLEObjects("lbSheets").Object.ListCount End Sub