Excel VBA:NetworkDays错误2015

时间:2010-05-19 10:31:40

标签: excel vba excel-vba excel-2003

我在VBA课程中有这段代码,用于训练课程属性(日期)和今天日期之间的天数。

Dim EmailDate As Date
EmailDate = Me.Email.DateReceived

Debug.Print EmailDate, Date
Debug.Print NetworkDays(EmailDate), Date, Range("BankHolidays"))

当我运行它时,我得到以下输出

23/04/2010    19/05/2010 
[GetMacroRegId] 'NETWORKDAYS' <
[GetMacroRegId] 'NETWORKDAYS' -> '699990072' >
Error 2015

我已在模块中测试它,使用虚拟数据,并获得正确的答案。任何人都可以看到为什么这会在课堂上出错?

我引用了atpvbaen.xls。

编辑:我发现当我通过我在菜单栏上创建的菜单选项运行代码时它会失败,但是当我通过按钮或通过VB编辑器运行它时,它可以正常工作。看起来它与菜单有关。

谢谢,马丁

2 个答案:

答案 0 :(得分:1)

您确定已将代码正确粘贴到您的问题中吗? NetworkDays需要3个参数,而不是一个,所以:

Debug.Print NetworkDays(EmailDate), Date, Range("BankHolidays")) 

应该是:

Debug.Print NetworkDays(EmailDate, Date, Range("BankHolidays")) 

答案 1 :(得分:0)

从菜单运行时,您正在应用程序级上下文中运行。所以 如果未在多个打开的工作簿中定义或定义范围,则无法正确解析范围(“BankHolidays”)。尝试使用

activeworkbook.activesheet.Range("BankHolidays")

这应解决名称。