Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 16.10.2008, 22:28   #1
tolikman
Форумчанин
 
Регистрация: 25.08.2008
Сообщений: 159
По умолчанию задать значение переменной в только что макросом открытой книге

Доброе всем... Вопрос такой: есть код (2007)
Код:
sub открыть_книгу()
   ...
   workbooks.open ("ЭТАП 2.xlsm")
   workbooks.runAutoMacros xlAutoOpen
   ...
end sub
и в другой книге:
Код:
public edit as boolean
sub Auto_Open()
   ...
   edit = True
   msgbox edit 'выводит True
   ...
end sub
и при выполнении:
Код:
sub msg()
   msgbox edit
end sub
выводит: "False"
где я туплю?
tolikman вне форума
Старый 17.10.2008, 05:39   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Вы присваиваете значение локальной переменной, которое сохраняется только пока работает макрос. После End Sub это значение теряется.
Объявите переменную "edit" как Public, т.е. в модуле макроса (не в модулях листов и рабочей книги) записать:
Код:
Public edit As String
ну, или не string, а какой тип Вам требуется.
Теперь, значение переменной edit будет сохраняться всегда, пока книга открыта.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 17.10.2008, 16:35   #3
tolikman
Форумчанин
 
Регистрация: 25.08.2008
Сообщений: 159
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Вы присваиваете значение локальной переменной, которое сохраняется только пока работает макрос. После End Sub это значение теряется.
Объявите переменную "edit" как Public, т.е. в модуле макроса
я все правильно объявляю, у меня в коде модуля открываемой книги объявляется сначала public edit as boolean, а потом sub auto_open():
Цитата:
Сообщение от tolikman Посмотреть сообщение
и в другой книге:
Код:
Код:
public edit as boolean
sub Auto_Open()
   ...
   edit = True
   msgbox edit 'выводит True
   ...
end sub
и при выполнении:
Код:
Код:
sub msg()
   msgbox edit
end sub
выводит: "False"
соответственно процедура sub msg() находится в открываемой книге, и запускается вручную для проверки значения edit'а.
Такое чувство что VBA записывает значение действительно в локальную переменную, так как "глобальную" переменную с аналогичным именем он еще не создал... если это так, то как это обойти не записывая данные в ячейки?
tolikman вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как получить значение переменной smoke888 PHP 3 20.06.2008 02:11
Как получить значение системной переменной в С++ PersonaGrata Общие вопросы C/C++ 2 29.02.2008 22:14
в 1 книге копируется значение ячейки, номер которой каждый раз увеличивается на 1... Dr.Alex Microsoft Office Excel 2 29.10.2007 20:29
где правильно объявить переменной значение Caption WhitePoint Общие вопросы Delphi 6 09.06.2007 00:19