如何在函数中引用Excel工作表

KSM*_*KSM 2 ms-access vba ms-access-2007 excel-vba access-vba

我试图将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)
Run Code Online (Sandbox Code Playgroud)

功能:

Function applyStyle1(wksContainer As Excel.Worksheet)
     With wksContainer
              ......
     End With
End Function
Run Code Online (Sandbox Code Playgroud)

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

Sid*_*out 5

第一个问题

这条线strDir&"\NEXTDAY.xls"应该是strDir & "\NEXTDAY.xls".&标志前后应该有一个空格.

第二个问题

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

第三个问题

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

Set wks7 = wkb7.Worksheets.Add
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)