【问题标题】:How to reference a Excel Worksheet within a function如何在函数中引用 Excel 工作表
【发布时间】:2014-01-06 16:05:34
【问题描述】:

我正在尝试将 Excel 工作表调用到函数中,但是我收到错误 438 "OBJECT DOESN'T SUPPORT THIS PROPERTY OR METHOD"

下面的代码调用了 applyStyle1

Dim wkb7 As Excel.Workbook
Set wkb7 = Excel.Application.Workbooks.Open(strDir&"\NEXTDAY.xls")
wkb7.ActiveSheet.Cells.Select
Selection.Copy
Set wks7 = wkb.Sheets.Add

applyStyle1 (wks7)

功能:

Function applyStyle1(wksContainer As Excel.Worksheet)
     With wksContainer
              ......
     End With
End Function

当函数调用被函数中的代码替换时,此代码有效,但是由于它被多次调用,我要求它位于函数中而不是重复代码。感谢您的宝贵时间,如果您需要更详细的解释,请告诉我。

【问题讨论】:

    标签: ms-access excel ms-access-2007 vba


    【解决方案1】:

    第一个问题

    strDir&"\NEXTDAY.xls" 应该是 strDir & "\NEXTDAY.xls"& 符号前后应该有一个空格。

    第二个问题

    您已声明wkb7,但在Set wks7 = wkb.Sheets.Add 中使用wkb。我建议使用Option Explicit

    第三个问题

    将@MarkHone Set wks7 = wkb.Sheets.Add 建议的行更改为

    Set wks7 = wkb7.Worksheets.Add
    

    第四个问题(你的实际问题!)

    applyStyle1 是一个需要返回一些东西的函数。如果您没有返回任何内容,请改用Sub

    例如

    Sub Sample()
        Dim wkb7 As Excel.Workbook
        Dim wks7 As Excel.Worksheet
    
        Set wkb7 = Excel.Application.Workbooks.Open(strDir & "\NEXTDAY.xls")
        wkb7.ActiveSheet.Cells.Copy
    
        Set wks7 = wkb7.Worksheets.Add
    
        applyStyle1 wks7
    End Sub
    
    Sub applyStyle1(wksContainer As Excel.Worksheet)
        With wksContainer
    
        End With
    End Sub
    

    【讨论】:

    • 良好而详细的答案,我同意 Option Explicit 被推荐。我不知道你为什么把第 5 行分成两个语句?
    • @MarkHone:对不起,我正在测试一些东西,忘记更新了。我确实在第四个问题中提到了正确的问题:)
    • 哦,是的,你做到了;然后没有投诉:-)
    • 感谢@SiddharthRout 的快速回复,我正在测试代码,但是在“applyStyle1 wks7”上出现错误,错误表明 ByRef 参数类型不匹配,但在代码中两者都被引用为 Excel。工作表。
    • @KSM:你声明Dim wks7 As Excel.Worksheet我在你的原始代码中没有看到吗?
    【解决方案2】:

    请尝试将您的第 5 行更改为:

    Set wks7 = wkb.Sheets.Add
    

    到:

    Set wks7 = wkb.Worksheets.Add
    

    工作表将包括工作簿中的所有工作表,包括图表工作表。

    【讨论】:

    • 感谢@MarkHone 的帮助
    猜你喜欢
    • 2017-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多