考虑这个简单的例子。在新工作表中创建一个名为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
答案 0 :(得分:4)
问题在于行ws.CheckBox1.Value
。你不能像这样使用它,因此你得到了这个错误。试试这个
Sub Sample()
Dim ws As Worksheet
Dim objole As OLEObject
Set ws = Worksheets(1)
Set objole = ws.OLEObjects("CheckBox1")
MsgBox "Checkbox state is: " & objole.Object.Value
End Sub
如果您想直接使用Object,那么您也可以使用此
Sub Sample()
Dim ws As Worksheet
Set ws = Worksheets(1)
MsgBox "Checkbox state is: " & Worksheets(ws.Name).CheckBox1.Value
End Sub