Определение VBA ARRAY не работает для глобальных определений - PullRequest
0 голосов
/ 22 мая 2019

Я определяю PIXEL_DATA как глобальный с

Dim PIXEL_DATA() As Variant

Я инициализирую его, используя функцию ARRAY в подпрограмме. И пока я в этой подпрограмме, в PIXEL_DATA есть соответствующие данные.

Но когда я пытаюсь получить доступ из другой подпрограммы

 Ptr = PIXEL_DATA(2)

Я получаю синюю "PIXEL_DATA" и появляется сообщение об ошибке "Ошибка компилятора: не указано подчиненное устройство или функция не определена".

Чего мне не хватает?

1 Ответ

2 голосов
/ 22 мая 2019

Вам не хватает ключевого компонента , где вы Dim ing PIXEL_DATA(). Вот пример:

Sub MainSub()

   Dim PIXEL_DATA() As Variant
   PIXEL_DATA = Array(1, 2, 3, 4, 5)
   Call OtherSub

End Sub
Sub OtherSub()

    Dim Ptr As Long
    Ptr = PIXEL_DATA(2)
    Debug.Print Ptr

End Sub

Запуск MainSub() приведет к ошибке компиляции с выделением OtherSub(), поскольку PIXEL_DATA() находится вне области видимости. Но перемещение PIXEL_DATA() на уровень modular компилируется, запускается и возвращает 3 в ближайшее окно, как и ожидалось:

Dim PIXEL_DATA() As Variant
Sub MainSub()

   PIXEL_DATA = Array(1, 2, 3, 4, 5)
   Call OtherSub

End Sub
Sub OtherSub()

    Dim Ptr As Long
    Ptr = PIXEL_DATA(2)
    Debug.Print Ptr

End Sub

Если ваш OtherSub() находится во всем другом модуле, вам нужно объявить как Public как @tigeravatar, упомянутый выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...