如何在函数中引用 Excel 工作表
Posted
技术标签:
【中文标题】如何在函数中引用 Excel 工作表【英文标题】:How to reference a Excel Worksheet within a function 【发布时间】: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
当函数调用被函数中的代码替换时,此代码有效,但是由于它被多次调用,我要求它位于函数中而不是重复代码。感谢您的宝贵时间,如果您需要更详细的解释,请告诉我。
【问题讨论】:
【参考方案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 的帮助以上是关于如何在函数中引用 Excel 工作表的主要内容,如果未能解决你的问题,请参考以下文章
在excel中如何将第一个工作表中的数据求和汇总到另一个表中
Excel表格引用另外一个表的数据,被引用表格不打开,引用表格上就不会显示数据,显示VALUE,急