Я не могу найти документацию для поддержки моих результатов, но именно поэтому я здесь. В моих модулях я объявляю несколько глобальных массивов, это само по себе не проблема, но то, что, похоже, происходит, заключается в том, что если я попытаюсь объявить несколько массивов в одном выражении, то будет инициализировано только первое. Может ли кто-нибудь подтвердить это как поведение и/или указать мне на документацию, которая поддерживает это?Excel VBA Глобальные переменные
Пример не работает заявление
Global arr1, arr2, arr3
Когда я иду в код, если я смотрю на определение arr1 его можно найти. Если я ищу либо arr2, либо arr3, я получаю сообщение о том, что «Идентификатор под cusor не распознается». Если я перемещу arr3 на новую линию и декальр как таковой:
Global arr1, arr2
Global arr3
Теперь это признано. Поэтому я не знаю, известно ли это поведение, ошибка или другое.
'Global а, б, c' прекрасно, все три должны быть определены без проблем, вам нужно будет для расширения вашего примера. Вы можете добавить 'option explicit' в начало модуля; это приведет к тому, что VBA поднимет ошибку, если вы попытаетесь использовать переменную uneclared/out of scope. (Его также лучше определить тип 'global a() как строка, b() как строка ...') –
В обоих случаях все переменные '' arr1'', '' arr2'' и '' arr3'' if объявленный так, как вы указали, должен работать. И все это будет тип '' variant''. Если вы явно не объявляете какой-либо тип, все переменные становятся '' TypeOf''' 'variant'' по умолчанию. – Cylian
Я также могу объявить переменные, как указано выше, и посмотреть их определения в следующем коде в том же и других модулях. Во второй рекомендации @AlexK. использовать Option Explicit. Одна вещь о глобальных переменных заключается в том, что они не могут быть объявлены внутри класса - он не будет компилироваться (но это явно не ваша проблема). –