Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Переменная, существующая до закрытия книги Excel - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Переменная, существующая до закрытия книги Excel (Макросы/Sub)
Переменная, существующая до закрытия книги Excel
giovanni Дата: Понедельник, 09.10.2017, 12:57 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Здравствуйте!

Помогите, пожалуйста, с вопросом.
Есть макрос, в котором присутствует цикл через DO...WHILE. Макрос запускается по нажатию кнопки.
Самым первым шагом в работе макроса необходимо пользователю задать вопрос - выбрал ли он правильные данные из выпадающего списка в книге Эксель через, к примеру, MSGBOX vbOKCancel, и если пользователь ответит ОК, то начать работы макроса.
Как все вышесказанное сделать я понимаю, но возник вопрос на том, как задать пользователю вопрос только один раз за все время, пока книга Эксель открыта?
То есть, чтобы можно было открыть книгу, нажать кнопку запуска макроса, ответить ОК или CANCEL и до закрытия книги чтобы ответ на вопрос сохранялся в переменной и снова он бы не задавался, даже если кнопка запуска макроса нажимается снова и снова.
Поискав в инете ответ на вопрос, нашел вариант с сохранением ответа на MSGBOK vbOKCancel в ячейке на скрытом листе той же книги, но этот способ мне не подходит, т.к. необходимо, чтобы при новом открытии книги вопрос задавался опять, а не видел уже сохраненное значение на скрытом листе и не брал его оттуда.

Помогите, пожалуйста, решить данную проблему.

UPD.: MSGBOX vbOKCancel находится до цикла DO...WHILE.


Сообщение отредактировал giovanni - Понедельник, 09.10.2017, 13:00
 
Ответить
СообщениеЗдравствуйте!

Помогите, пожалуйста, с вопросом.
Есть макрос, в котором присутствует цикл через DO...WHILE. Макрос запускается по нажатию кнопки.
Самым первым шагом в работе макроса необходимо пользователю задать вопрос - выбрал ли он правильные данные из выпадающего списка в книге Эксель через, к примеру, MSGBOX vbOKCancel, и если пользователь ответит ОК, то начать работы макроса.
Как все вышесказанное сделать я понимаю, но возник вопрос на том, как задать пользователю вопрос только один раз за все время, пока книга Эксель открыта?
То есть, чтобы можно было открыть книгу, нажать кнопку запуска макроса, ответить ОК или CANCEL и до закрытия книги чтобы ответ на вопрос сохранялся в переменной и снова он бы не задавался, даже если кнопка запуска макроса нажимается снова и снова.
Поискав в инете ответ на вопрос, нашел вариант с сохранением ответа на MSGBOK vbOKCancel в ячейке на скрытом листе той же книги, но этот способ мне не подходит, т.к. необходимо, чтобы при новом открытии книги вопрос задавался опять, а не видел уже сохраненное значение на скрытом листе и не брал его оттуда.

Помогите, пожалуйста, решить данную проблему.

UPD.: MSGBOX vbOKCancel находится до цикла DO...WHILE.

Автор - giovanni
Дата добавления - 09.10.2017 в 12:57
KuklP Дата: Понедельник, 09.10.2017, 13:03 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Почитайте о глобальных переменных. При первом запуске присвоили значение, при повторных просто проверка переменной на наличие в ней значения. После закрытия она исчезнет.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеПочитайте о глобальных переменных. При первом запуске присвоили значение, при повторных просто проверка переменной на наличие в ней значения. После закрытия она исчезнет.

Автор - KuklP
Дата добавления - 09.10.2017 в 13:03
and_evg Дата: Понедельник, 09.10.2017, 13:06 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 452
Репутация: 78 ±
Замечаний: 0% ±

Excel 2007
Почитайте о глобальных переменных

Либо записывать переменную в определенную ячейку листа
 
Ответить
Сообщение
Почитайте о глобальных переменных

Либо записывать переменную в определенную ячейку листа

Автор - and_evg
Дата добавления - 09.10.2017 в 13:06
KuklP Дата: Понедельник, 09.10.2017, 13:07 | Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Чукча не читатель? :D
нашел вариант с сохранением ответа на MSGBOK vbOKCancel в ячейке на скрытом листе той же книги, но этот способ мне не подходит, т.к. необходимо, чтобы при новом открытии книги вопрос задавался опять, а не видел уже сохраненное значение на скрытом листе и не брал его оттуда.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеЧукча не читатель? :D
нашел вариант с сохранением ответа на MSGBOK vbOKCancel в ячейке на скрытом листе той же книги, но этот способ мне не подходит, т.к. необходимо, чтобы при новом открытии книги вопрос задавался опять, а не видел уже сохраненное значение на скрытом листе и не брал его оттуда.

Автор - KuklP
Дата добавления - 09.10.2017 в 13:07
KuklP Дата: Понедельник, 09.10.2017, 13:11 | Сообщение № 5
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
как задать пользователю вопрос только один раз за все время, пока книга Эксель открыта
Можно задать вопрос при событии открытия книги. А там уже неважно, или в глобальной переменной хранить ответ, или в ячейке. При следующем открытии вопрос опять будет задан.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
Сообщение
как задать пользователю вопрос только один раз за все время, пока книга Эксель открыта
Можно задать вопрос при событии открытия книги. А там уже неважно, или в глобальной переменной хранить ответ, или в ячейке. При следующем открытии вопрос опять будет задан.

Автор - KuklP
Дата добавления - 09.10.2017 в 13:11
_Boroda_ Дата: Понедельник, 09.10.2017, 13:14 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
необходимо, чтобы при новом открытии книги вопрос задавался опять

Так при открытии или закрытии книги (или и так, и так - не помешает уж точно) стирайте ту ячейку и будет Вам счастье
В модуль книги
[vba]
Код
Private Sub Workbook_Open()
    Range("A1").ClearContents
End Sub
'или
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Range("A1").ClearContents
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
необходимо, чтобы при новом открытии книги вопрос задавался опять

Так при открытии или закрытии книги (или и так, и так - не помешает уж точно) стирайте ту ячейку и будет Вам счастье
В модуль книги
[vba]
Код
Private Sub Workbook_Open()
    Range("A1").ClearContents
End Sub
'или
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Range("A1").ClearContents
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 09.10.2017 в 13:14
giovanni Дата: Понедельник, 09.10.2017, 17:54 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Спасибо всем за ответы, за помощь!

Почитайте о глобальных переменных.

Объявив глобальную переменную и занеся в нее ответ на MSGBOX vbOKCancel, макрос начал работать как нужно!

Спасибо!
 
Ответить
СообщениеСпасибо всем за ответы, за помощь!

Почитайте о глобальных переменных.

Объявив глобальную переменную и занеся в нее ответ на MSGBOX vbOKCancel, макрос начал работать как нужно!

Спасибо!

Автор - giovanni
Дата добавления - 09.10.2017 в 17:54
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Переменная, существующая до закрытия книги Excel (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!