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

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

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

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

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

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


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