Excel VBA: ошибка NetworkDays 2015 - PullRequest
0 голосов
/ 19 мая 2010

У меня есть этот бит кода в классе 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 Editor, он работает нормально. Похоже, это как-то связано с меню.

Спасибо, Мартин

Ответы [ 2 ]

1 голос
/ 20 мая 2010

Вы уверены, что правильно вставили код в свой вопрос? NetworkDays принимает 3 аргумента, а не один, поэтому:

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

должно быть:

Debug.Print NetworkDays(EmailDate, Date, Range("BankHolidays")) 
0 голосов
/ 19 мая 2010

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

activeworkbook.activesheet.Range("BankHolidays")

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

...