2010-05-19 1 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) для аналогичной проблемы. –

+0

Привет, Дейв, я просмотрел ссылку, и я не думаю, что это связано. Я использую 2003 и только, кажется, получаю ошибку, когда я запускаю код из опции меню. Спасибо, Martin – Martin

ответ

0

Когда вы работаете с меню вы работаете в контексте на уровне приложений. Таким образом, Диапазон («BankHolidays») не разрешен должным образом, если диапазон не определен или определен в нескольких открытых книгах. Попробуйте использовать

activeworkbook.activesheet.Range("BankHolidays") 

Это должно решить название.

+0

Привет, я попробовал ваше предложение, но это не имеет никакого значения. Я все еще получаю ошибку. Я написал функцию, которая дает те же результаты, но не использует эту функцию. Спасибо за вашу помощь. – Martin

1

Вы уверены, что правильно вставили код в свой вопрос? ЧИСТРАБДНИ принимает 3 аргумента, а не один, так:

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

должно быть:

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

Привет, второй) был опечаткой, когда я собирал пост. Удаление этого не решает проблему. – Martin

+0

Просто пытаюсь исключить очевидное. Удачи. – PowerUser