Появилась ошибка 5 "Invalid procedure call or argument" после обновлений Windows 2019-08
|
|
Четверг, 15 Августа 2019 г. 11:52
+ в цитатник
Всем привет.
В очередной раз столкнулся с ошибками после обновления Windows.
На этот раз "зацепило" массивы, а именно пустые массивы ParamArray.
Для примера сформируем такой массив с помощью простой функции:
Private Function ParamArray_Variant(ParamArray Params())
ParamArray_Variant = Params
End Function
Конечно можно работать с Params напрямую. Но я буду использовть эту функцию только для того, чтобы сформировать нужный массив.
Пусть далее будет:
Dim v
v = ParamArray_Variant
Для v:
- IsMissing(v) = True
- IsArray(v) = True
- LBound(v) = 0
- UBound(v) = -1
Теперь определим простой массив и попробуем сделать то же самое действие:
Dim a()
a = ParamArray_Variant 'Здесь нас ждет сюрприз в виде ошибки 5 "Invalid procedure call or argument".
Но если ParamArray массив не пустой, то все хорошо:
Dim b()
b = ParamArray_Variant(1) 'ОК
Теперь нельзя просто взять и присвоить обычному массиву значение произвольного массива ParamArray.
Нужно обязательно проверять на IsMissing. Например так:
Dim a()
Dim v: v = ParamArray_Variant
If Not VBA.IsMissing(v) Then a = v
Проблемные обновления вышли
13.08.2019 на всех платформах, включая Windows 10. Скорее всего был затронут код в
oleaut32.dll.
С уважением,
Павел
https://www.sql.ru/forum/1315989/poyavilas-oshibka-5-invalid-procedure-call-or-argument-posle-obnovleniy-windows-2019-08
-
Запись понравилась
-
0
Процитировали
-
0
Сохранили
-