我在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编辑器运行它时,它可以正常工作。看起来它与菜单有关。
谢谢,马丁
答案 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")
这应解决名称。