【问题标题】:Accessing Excel sheet-specific objects from a self-defined Worksheet object从自定义工作表对象访问 Excel 工作表特定对象
【发布时间】: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 对象固有的,但复选框不是。如何强制编译器“了解”工作表包含的对象?

【问题讨论】:

    标签: vba excel checkbox


    【解决方案1】:

    考虑到下面的代码,您的问题可以改写为:为什么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
    

    答案是——OLEObjects("name").Object

    【讨论】:

    • 太棒了!那工作得很好。我对 VBA 还是很陌生(来自 C#)。现在我有了一个方法名称,我可以进一步阅读它。
    • @JDCAce - 很高兴我能帮上忙。 ☺
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多