powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Глобальные переменные в VBA.
9 сообщений из 9, страница 1 из 1
Глобальные переменные в VBA.
    #32817036
Heilig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему-то не могу внятного описания, как сделать переменную, значение которой бы сохранялось между вызовами процедур, и было доступно из любой точки модуля или кода формы в пределах одной рабочей книги.

То есть для примера задача такая:
Из формы, при нажатии кнопки открываю диалог выбора файла, получаю оттуда путь, присваиваю его переменной. Затем мне надо будет открывать эту книгу и из модуля постоянно на нее ссылаться. Как мне этот путь сохранить во первых неизменным, во вторых доступным из модуля.

Есть конечно вариант записать его в Caption скрытой метки на той же форме, но вся моя сущность против этого протестует.
...
Рейтинг: 0 / 0
Глобальные переменные в VBA.
    #32817104
Lenivec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну так кто мешает то создать в модуле глобальную переменную, или я чего не понял
...
Рейтинг: 0 / 0
Глобальные переменные в VBA.
    #32817117
Heilig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если имеется в виду Public то она не держит значение почему-то.
...
Рейтинг: 0 / 0
Глобальные переменные в VBA.
    #32817127
Lenivec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скользкая видать попалась...

у меня все держит
...
Рейтинг: 0 / 0
Глобальные переменные в VBA.
    #32817164
Heilig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Значит где-то туплю
Буду разбираться, спасибо.

То есть я правильно понял, что если я объявил переменную как Public на уровне модуля и из процедуры скажем Workbook_Open назначил ей значение, то она по сути держит значение на протяжении всего времени пока книга открыта?
...
Рейтинг: 0 / 0
Глобальные переменные в VBA.
    #32817195
Lenivec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
правильно, только в данном случае стоит обратить внимание на то не подменяете ли вы понятия модуль и модуль класса
тоесть если вы определяете переменную в том же модуле что и процедура Workbook_Open, то это модуль класа и там вы действительно будете терять свою переменную
...
Рейтинг: 0 / 0
Глобальные переменные в VBA.
    #32818034
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Следует обратить внимание ещё на один фактор.
При отладке часть кода может быть изменена интерактивно.
IDE VBA, IMHO, не всегда предупреждает о том, что значения
некоторых переменных при этом теряются.
...
Рейтинг: 0 / 0
Глобальные переменные в VBA.
    #32818690
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот что пишут об этом Э.Уэллс и С.Хешбаргер в книге "Microsoft Excel 97: разработка приложений": БХВ - Санкт-Петербург,1998. - 624 с.:
стр.91 О компиляции переменных уровня проекта и уровня модуля
После того, как переменным уровня проекта или уровня модуля присвоено значение, эти переменные будут сохранять его до тех пор, пока им не будет присвоено новое значение или не будет закрыта рабочая книга.
Однако существует ещё один случай, когда такие переменные могут потерять свои значения - если модуль перешёл в "неоткомпилированное" состояние. Это происходит при внесении изменений глобального характера: напр., если была добавлена или удалена процедура или были внесены изменения в раздел описания модуля. В момент, когда происходит первое обращение к данному модулю, он перекомпилируется и сохраняет такое состояние до внесения следующих изменений указанного типа.
Для уверенности в том, что все модули откомпилированы, можно выполнить команду Debug-->Compile.
...
Рейтинг: 0 / 0
Глобальные переменные в VBA.
    #32819074
Heilig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Похоже что у меня была действительно проблема с компиляцией. Мне надо было постоянно держать открытыми несколько проектов, и дергать их асинхронно. Вполне может быть что я не отслеживал в какой момент что компилится. Сейчас на одном проекте вроде все живет.

Спасибо. Тему можно считать закрытой.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Глобальные переменные в VBA.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]