Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 17.07.2013
Сообщений: 35

Выполнение макроса внутри диалогового окна Excel

11.02.2016, 17:34. Показов 2389. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, уважаемые гуру! Подскажите, пожалуйста, можно ли запустить выполнение макроса внутри диалогового окна, и в случае необходимости по кнопке стоп оставить его выполнение?

Если из модуля вызвать окно таким образом:
Visual Basic
1
2
MyDialogForm.Show 0
Call MyDialogForm.call_something
тогда окно будет висеть без возможности манипуляции. Есть ли возможность сделать так, чтобы скрипт внутри окна выполнялся, но при этом можно было прервать операцию по кнопке "СТОП"?

Если не трудно дайте простенький пример, или ссылку на такой процесс. Спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.02.2016, 17:34
Ответы с готовыми решениями:

Вызов диалогового окна выбора цвета (Excel)
Как вызвать диалоговое окно выбора цвета и как получить из него значение для закраски ячейки? Или оно и так возвращает 8 битное значение в...

Открытие документа Word из Excel с использованием диалогового окна
Здравствуйте. Столкнулся с такой проблемой: не получается написать макрос который после запуска из Excel открывает окно с выбором файлов, в...

Выполнение макроса для всех ячеек столбца Excel
Здравствуйте! Мне нужно сделать так что бы макрос выполнялся для всех ячеек столбца. Этот пример разработан для одной строки,...

5
19 / 19 / 5
Регистрация: 23.04.2014
Сообщений: 72
11.02.2016, 17:42
Я, в свое время, выкручивался из такой ситуации следующим образом.
Ставил флаг (например на невидимый лейбл, если речь идет о форме), при кнопке "СТАРТ" флаг менялся на 1 и запускался нужный скрипт. В начале скрипта ставишь проверку на флаг = 1. В конце скрипта ставишь таймер на повтор этой же процедуры через секунду. По кнопке "СТОП" флаг = 0. Вот и все
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
11.02.2016, 17:54
Цитата Сообщение от EvgenSanich Посмотреть сообщение
тогда окно будет висеть без возможности манипуляции
В свойствах формы ShowModal=False - и пожалуйста, выполняйте макрос или работайте с документом при открытой форме.
1
19 / 19 / 5
Регистрация: 23.04.2014
Сообщений: 72
11.02.2016, 17:56
Цитата Сообщение от Казанский Посмотреть сообщение
ShowModal=False
Цитата Сообщение от EvgenSanich Посмотреть сообщение
MyDialogForm.Show 0
А разве это не одно и то же ?
1
Заблокирован
11.02.2016, 18:04
Лучший ответ Сообщение было отмечено EvgenSanich как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
DIM FLAG AS BOOLEAN
 
PRIVATE SUB КНОПКА_СТОП_CLICK
FLAG =NOT FLAG 
END SUB
 
sub call_something'ОЧЕНЬ ДЛИННАЯ ПРОЦЕДУРА
 
for each ...'ОЧЕНЬ ДЛИННЫЙ цыкл
 
  'Ваш длинный код
 
  DOEVENTS
  IF FLAG THEN EXIT SUB
 
next
 
end sub
2
0 / 0 / 0
Регистрация: 17.07.2013
Сообщений: 35
11.02.2016, 22:03  [ТС]
Спасибо всем! помог вариант Shersh. Фишка в том, что флаги надо выставлять на каждом "под-цикле", тогда в процессе выполнения всего скрипта (ну или петли) можно по кнопке "стоп" тормозить выполнение. Полезная штука кстати в организации простенького progress bar'а и отслеживания работы больших скриптов.

P.S. отдельное спасибо quende за тему с флагами и казанскому за ShowModal в настройка, буду знать. Надеюсь правильно ник неймы написал
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.02.2016, 22:03
Помогаю со студенческими работами здесь

Как присвоить переменную одного диалогового окна к переменной другого диалогового окна? (ООП)
Вот у меня есть результат вычисления и я его присваиваю переменной в первом диалоговом окне, но я хочу выдать результат во второе...

Как сделать вычисления внутри диалогового окна, а не по сообщению
Как в VisualBasic 2010 сделать так, чтобы все вычисления проходили внутри диалогового окна? К примеру вводим число и результат без...

Открытие диалогового окна Word в документе Excel
Здравствуйте! Надеюсь на отзывчивых людей)) Задача следующая: Открыть excel и там же с помощью кнопки открыть диалоговое окно...

Выполнение Макроса Access из надстройки Excel
Приветствую всех. Товарищи помогите решить проблему: В Access есть макрос - нужно при нажатии на кнопку в Надстройке Excel (vsto...

Удержание окна с текущими введенными значениями после диалогового окна (с предупреждением)
Здравствуйте, есть маленькая задачка. Форма добавления ТС, открывается с основной формы. Нужно заполнить все поля и нажать кнопку, если...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru