|
Глобальные переменные в VBA.
|
|||
---|---|---|---|
#18+
Почему-то не могу внятного описания, как сделать переменную, значение которой бы сохранялось между вызовами процедур, и было доступно из любой точки модуля или кода формы в пределах одной рабочей книги. То есть для примера задача такая: Из формы, при нажатии кнопки открываю диалог выбора файла, получаю оттуда путь, присваиваю его переменной. Затем мне надо будет открывать эту книгу и из модуля постоянно на нее ссылаться. Как мне этот путь сохранить во первых неизменным, во вторых доступным из модуля. Есть конечно вариант записать его в Caption скрытой метки на той же форме, но вся моя сущность против этого протестует. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2004, 16:34 |
|
Глобальные переменные в VBA.
|
|||
---|---|---|---|
#18+
ну так кто мешает то создать в модуле глобальную переменную, или я чего не понял ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2004, 16:52 |
|
Глобальные переменные в VBA.
|
|||
---|---|---|---|
#18+
Если имеется в виду Public то она не держит значение почему-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2004, 16:56 |
|
Глобальные переменные в VBA.
|
|||
---|---|---|---|
#18+
скользкая видать попалась... у меня все держит ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2004, 16:58 |
|
Глобальные переменные в VBA.
|
|||
---|---|---|---|
#18+
Значит где-то туплю Буду разбираться, спасибо. То есть я правильно понял, что если я объявил переменную как Public на уровне модуля и из процедуры скажем Workbook_Open назначил ей значение, то она по сути держит значение на протяжении всего времени пока книга открыта? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2004, 17:09 |
|
Глобальные переменные в VBA.
|
|||
---|---|---|---|
#18+
правильно, только в данном случае стоит обратить внимание на то не подменяете ли вы понятия модуль и модуль класса тоесть если вы определяете переменную в том же модуле что и процедура Workbook_Open, то это модуль класа и там вы действительно будете терять свою переменную ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2004, 17:20 |
|
Глобальные переменные в VBA.
|
|||
---|---|---|---|
#18+
Следует обратить внимание ещё на один фактор. При отладке часть кода может быть изменена интерактивно. IDE VBA, IMHO, не всегда предупреждает о том, что значения некоторых переменных при этом теряются. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2004, 10:42 |
|
Глобальные переменные в VBA.
|
|||
---|---|---|---|
#18+
Вот что пишут об этом Э.Уэллс и С.Хешбаргер в книге "Microsoft Excel 97: разработка приложений": БХВ - Санкт-Петербург,1998. - 624 с.: стр.91 О компиляции переменных уровня проекта и уровня модуля После того, как переменным уровня проекта или уровня модуля присвоено значение, эти переменные будут сохранять его до тех пор, пока им не будет присвоено новое значение или не будет закрыта рабочая книга. Однако существует ещё один случай, когда такие переменные могут потерять свои значения - если модуль перешёл в "неоткомпилированное" состояние. Это происходит при внесении изменений глобального характера: напр., если была добавлена или удалена процедура или были внесены изменения в раздел описания модуля. В момент, когда происходит первое обращение к данному модулю, он перекомпилируется и сохраняет такое состояние до внесения следующих изменений указанного типа. Для уверенности в том, что все модули откомпилированы, можно выполнить команду Debug-->Compile. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2004, 13:53 |
|
Глобальные переменные в VBA.
|
|||
---|---|---|---|
#18+
Похоже что у меня была действительно проблема с компиляцией. Мне надо было постоянно держать открытыми несколько проектов, и дергать их асинхронно. Вполне может быть что я не отслеживал в какой момент что компилится. Сейчас на одном проекте вроде все живет. Спасибо. Тему можно считать закрытой. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2004, 16:09 |
|
|
start [/forum/topic.php?fid=61&msg=32818034&tid=2186367]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 168ms |
0 / 0 |