考虑这个简单的例子。在一个新的工作表中创建一个名为Checkbox1的ActiveX复选框。
尝试以下两个子程序。第一个会出现“找不到方法或数据成员”错误,而第二个可以正常运行。
为什么第一个示例不能运行?
尝试以下两个子程序。第一个会出现“找不到方法或数据成员”错误,而第二个可以正常运行。
为什么第一个示例不能运行?
Option Explicit
Sub DoesntWork()
Dim ws As Worksheet
Set ws = Worksheets(1)
MsgBox "Checkbox state is: " + CStr(ws.CheckBox1.Value)
End Sub
Sub Works()
Dim ws As Variant
Set ws = Worksheets(1)
MsgBox "Checkbox state is: " + CStr(ws.CheckBox1.Value)
End Sub
Sub Works()
中,对对象ws
打一个观察点(Watch
),然后查看ws
在运行时的类型。 - Siddharth RoutDim ws As Worksheet
给了我一个Worksheet/Sheet1 类型
。而Dim wsObj as Object
给了我一个Object/Sheet1
类型。但是当我在本地窗口中展开ws
和wsObj
时,它们都列出CheckBox1
作为属性...所以这一定与将工作表强制转换为Worksheet
类型相比较Object
有关,但我仍然在使用Excel的对象模型方面遗漏了某些内容... - pedramCheckbox1
只适用于 Variant/Object/Worksheets/Sheet1(在这种情况下),而不适用于Worksheet
。如果您使用智能感知,当您将 ws 声明为工作表时,您将无法获得.Checkbox1
选项。 - Siddharth Rout