【发布时间】:2018-08-30 22:34:24
【问题描述】:
我有一个工作簿,其中包含一个带有复选框的工作表。我目前正在使用Sheets("Voltest").cbFee 访问该复选框(名为 cbFee)。这按预期工作。但是,我想创建第二个工作簿,因此我将包含我的宏和“Voltest”工作表的第一个工作簿保存为对象wbMacros。为了帮助减少 wbMacros.Sheets("Voltest") 的所有输入,我通过创建一个 Worksheet 对象 wsVoltest 并将其设置为该工作表来缩短它。
但是,当我尝试使用 wsVoltest.cbFee 访问复选框时,系统提示我“编译错误:找不到方法或数据成员。”
这是我的代码:
模块 1:
Public wbMacros As Workbook
Public wbFinish As Workbook
Public wsVoltest As Worksheet
Sub Voltest()
Set wbMacros = ThisWorkbook
Set wbFinish = Workbooks.Add
Set wsVoltest = wbMacros.Sheets("Voltest")
Application.run "TabNames"
End Sub
模块 2:
Sub TabNames()
Dim voltestSheet As Worksheet
Set voltestSheet = wbMacros.Sheets("Voltest")
' These two message boxes are for testing. They both display the correct value
MsgBox "wbMacros.Sheets: " & wbMacros.Sheets("Voltest").Name
MsgBox "Voltest sheet: " & voltestSheet.Name
' This If works just fine
If wbMacros.Sheets("Voltest").cbFee.Value Then
MsgBox "If hit"
End If
' This If gives the compile error
If voltestSheet.cbFee.Value Then
MsgBox "2nd If hit"
End If
我猜 wsVoltest.Name 工作正常,因为 Name 属性是所有 Worksheet 对象固有的,但复选框不是。如何强制编译器“了解”工作表包含的对象?
【问题讨论】: