Excel VBA中Application.Worksheetfunction属于哪个引用库?
解答
不需要添加任何额外引用库,WorksheetFunction就是Microsoft Excel 16.0 Object Library的内置成员,你访问失败的核心原因是调用时的父对象指向错误。
错误原因
Access VBA环境中,全局的Application对象默认指向Access程序本身,Access的Application类下根本没有WorksheetFunction成员,自然会出现找不到对象的报错。
正确调用示例
你必须通过自己创建的Excel应用实例来调用WorksheetFunction,已添加Excel 16.0对象库的早期绑定场景下,参考如下代码:
Sub GetRangeAverage() Dim xlApp As Excel.Application Dim xlWb As Excel.Workbook Dim xlWs As Excel.Worksheet Dim dAvg As Double ' 启动Excel进程、打开目标工作簿 Set xlApp = New Excel.Application Set xlWb = xlApp.Workbooks.Open("D:\你的数据文件.xlsx") ' 替换为实际文件路径 Set xlWs = xlWb.Worksheets("数据页") ' 替换为实际工作表名称 ' 正确调用工作表函数计算指定区域平均值,父对象为Excel实例xlApp dAvg = xlApp.WorksheetFunction.Average(xlWs.Range("B2:B100")) ' 替换为实际计算区域 MsgBox "目标区域平均值为:" & dAvg ' 收尾:关闭文件、退出Excel、释放对象,避免后台残留Excel进程 xlWb.Close SaveChanges:=False xlApp.Quit Set xlWs = Nothing Set xlWb = Nothing Set xlApp = Nothing End Sub
归属验证
你可以按F2调出VBA编辑器的对象浏览器,将顶部库选择下拉框切换为Excel,搜索WorksheetFunction即可看到,它明确属于Excel.Application类,没有单独的依赖库。
注意事项
- 如果你用后期绑定写法(不提前添加Excel引用,通过
CreateObject("Excel.Application")创建Excel实例),调用逻辑完全一致,仍然通过创建出的Excel实例访问WorksheetFunction即可 - 如果计算区域内存在错误值(如#N/A、#DIV/0!)或非数值文本,
WorksheetFunction.Average会直接抛出运行时错误,需要提前增加容错判断
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

