|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.05.2010, 13:49 | #1 |
Пользователь
Регистрация: 04.12.2009
Сообщений: 40
|
Правильное объявление глобальных переменных
Добрый день!
Подскажите, пожалуйста, в чем причина следующей проблемы. В моем VBA-проекте задаются несколько глобальных переменных, которые объявляются в отдельном модуле. Инициализация этих переменных происходит на этапе открытия книги (Инициализация одной из переменных происходит в событии Workbook_Open, две других (текстовых) - в открываемой по умолчанию форме UserForm). Операция проходит успешно, это подтверждается тестовыми вызовами команд Debug.Print. Работа с этими переменными проходит успешно до тех пор, пока не вызывается ЛЮБАЯ форма UserForm из моего проекта. После закрытия любой формы значения переменных "сбрасываются". Подскажите, пожалуйста, как правильно объявить глобальные переменные, чтобы избежать подобной ситуации? Заранее спасибо! |
14.05.2010, 14:06 | #2 |
Участник клуба
Регистрация: 17.07.2009
Сообщений: 1,088
|
Объявляете переменные в стандартом модуле? Как объявляете?
Как Вы инициализируете переменные? Не обнуляются ли значения в теле формы?
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru |
14.05.2010, 14:17 | #3 |
Пользователь
Регистрация: 04.12.2009
Сообщений: 40
|
Объявляю переменные в модуле "V":
Код:
Я проверил еще раз - эти переменные нигде не обновляются в коде форм, там происходит только обращение к данным в режиме чтения ... |
14.05.2010, 14:21 | #4 | |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
Цитата:
если написать Вася = "Вася" Debug.Print Вася Это показывает, что переменная Вася в текущей процедуре получила значение "Вася" и совершенно не значит, что это имеет отношение к глобальной переменной Вася, которая некорректно обьявлена в одном из модулей.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
|
14.05.2010, 14:24 | #5 |
Участник клуба
Регистрация: 17.07.2009
Сообщений: 1,088
|
А как Вы инициализируете переменные? Попробуйте вынести присвоение значений переменных за пределы модуля форм. Т.е. вызываете форму так:
Код:
Попробуйте присвоить значение до показа формы Код:
Хотя я все же думаю, что где-то что-то неверно объявлено. Есть еще вариант - Вы на форме программно создаете/удаляете некие элементы. Это тоже может приводить к обнулению.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru Последний раз редактировалось The_Prist; 14.05.2010 в 14:28. |
14.05.2010, 14:25 | #6 |
Пользователь
Регистрация: 04.12.2009
Сообщений: 40
|
Для объявления глобальных переменных у меня используется специально выделенный для этого модуль, в котором не содержится никаких процедур.
Вызов тестовой процедуры я провожу в другом модуле, "Module1". |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как вынести объявление переменных в отдельный сегмент кода | boris-blade | Microsoft Office Word | 1 | 16.01.2010 19:31 |
правильное снятие хука | majestic | Win Api | 1 | 11.01.2010 02:52 |
правильное составление услвовия | P®o©omp@s | Помощь студентам | 8 | 26.10.2009 09:59 |
Объявление переменных на ВЕСЬ проект | Alex Cones | Общие вопросы Delphi | 8 | 25.04.2009 22:09 |
Как сделать привязку глобальных горячих клавиш к свой проге? | Jinxers | Помощь студентам | 1 | 08.02.2009 00:29 |