Vba 从自定义工作表对象访问Excel工作表特定对象

Vba 从自定义工作表对象访问Excel工作表特定对象,vba,excel,checkbox,Vba,Excel,Checkbox,我有一个工作簿,其中包含一张带有复选框的工作表。我目前正在使用Sheets(“Voltest”).cbFee访问该复选框(名为cbFee)。这正是我们想要的。但是,我想创建第二个工作簿,因此我将包含宏和“Voltest”表的第一个工作簿保存为对象wbMacros。为了帮助减少wbMacros.Sheets(“Voltest”)的所有键入,我创建了一个工作表对象wsVoltest,并将其设置为该工作表,从而缩短了它 但是,当我尝试使用wsVoltest.cbFee访问复选框时,系统会提示“编译错误

我有一个工作簿,其中包含一张带有复选框的工作表。我目前正在使用
Sheets(“Voltest”).cbFee
访问该复选框(名为cbFee)。这正是我们想要的。但是,我想创建第二个工作簿,因此我将包含宏和“Voltest”表的第一个工作簿保存为对象
wbMacros
。为了帮助减少wbMacros.Sheets(“Voltest”)的所有键入,我创建了一个工作表对象
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属性是所有工作表对象固有的,但复选框不是。如何强制编译器“了解”工作表包含的对象?

考虑到下面的代码,您的问题可以改为:Why
Debug.Print ws.checkbox1.value
给出错误以及如何引用它:

Public Sub TestMe()

    Dim ws As Worksheet

    Set ws = ThisWorkbook.Worksheets(1)
    Debug.Print Worksheets(1).CheckBox1.Value

    'v----< Error if you uncomment!
    'debug.Print ws.CheckBox1.value

    'v----< This works:
    Debug.Print ws.OLEObjects("CheckBox1").Object.Value

End Sub
公共子TestMe()
将ws设置为工作表
设置ws=This工作簿。工作表(1)
调试。打印工作表(1)。复选框1.Value
“v-->如果取消注释,则出现错误!
'debug.Print ws.CheckBox1.value
“v---<这项工作:
Debug.Print ws.OLEObjects(“CheckBox1”).Object.Value
端接头

答案是-使用
OLEObjects(“name”)。Object

太棒了!这非常有效。我对VBA(来自C#)还是相当陌生的。现在我有了一个方法名,我可以进一步了解它了。@jdcac-很高兴我能帮上忙。☺