2010-05-19 81 views
0

我的代码这一点在VBA类,这是锻炼天类(日期)和今天的日期的属性之间的数字。Excel的VBA:NETWORKDAYS错误2015年

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

从我可以告诉,这可能是做Excel 2007中的一个错误 - 是什么您使用?有[这里](http://help.wugnet.com/office/Yield-function-missing-XL2007-SP1-ATPVBAEN-Analysis-ToolPak-ftopict1160374.html)一个类似的问题一起来看看。 – 2010-05-19 10:56:29

+0

嗨戴夫,我看了一下链接,我不认为它是相关的。我使用的是2003版本,并且似乎只是在从菜单栏选项运行代码时出现错误。谢谢,马丁 – Martin 2010-05-19 12:25:05

回答

0

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

activeworkbook.activesheet.Range("BankHolidays") 

这应该解析名称。

+0

嗨,我已经尝试过你的建议,但它没有任何区别我仍然收到错误。我写了一个产生相同结果但不使用该函数的函数。谢谢你的帮助。 – Martin 2010-05-24 09:05:31

1

你确定正确粘贴代码到你的问题? NETWORKDAYS接受3个参数,而不是一个,那么:

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

应该是:

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

嗨,第二个)当我把这个帖子放在一起时是一个错字。删除它并不能解决问题。 – Martin 2010-05-24 09:04:11

+0

只是试图排除明显的。祝你好运。 – PowerUser 2010-05-24 13:11:03

相关问题