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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2012, 19:44   #1
Blame
Пользователь
 
Регистрация: 24.12.2011
Сообщений: 70
Смущение эмуляция пошагового режима =)

Ребята!
Подскажите, пожалуйста, а есть какая нибудь возможность в VBA сделать исполнение кода в пошаговом режиме? Я НЕ имею в виду F8.
У меня в лабе (реализация алгоритм Маркова - её я сделала) идет обработка символьных значений, все окей, только надо добавить возможность выполнения программы в пошаговом режиме*, чтобы проследить механизм замен продукций...)) Такое вот бесполезное требование к лабе, только сейчас увидела)
У меня есть вариант добавить секундомер, чтобы каждое действие с символами выполнялось через 1-2 секунды ) но для того, чтобы, например, приостановить выполнение - придется еще добавить какую-нибудь кнопень прерывания))
У Вас есть какой-нибудь вариант изящней и, главное, проще?)))

*...у меня на форме одна только кнопка, по нажатию на которую происходит выполнение программы)

СПАСИБО!
Peace!

Последний раз редактировалось Blame; 16.10.2012 в 20:00.
Blame вне форума Ответить с цитированием
Старый 16.10.2012, 23:22   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

достаточно в код добавить одну строку (или несколько таких строк, после каждого видимого действия)

Код:
' пауза в 2 секунды
if ПошаговыйРежим = TRUE then application.Wait now + 2/86400
Заведите глобальную переменную ПошаговыйРежим типа Boolean
и ставьте ей значение TRUE перед запуском в пошаговом режиме
EducatedFool вне форума Ответить с цитированием
Старый 16.10.2012, 23:33   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а я бы пошёл в такую сторону.
заводим глобальную переменную-флаг.
эта переменная должна быть доступна всем процедурам на листе. (назовём её, например, Next_Step_enable
на лист добавляем кнопку "STEP"
всё, что она будет делать, это устанавливать глобальную переменную Next_Step_enable в True.
внутри вашего цикла добавляем примерно такой код
Код:
Next_Step_enable = false;
while Not Next_Step_enable
   DoEvents
wend
пишу чисто теоретически - код не проверял!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.10.2012, 00:00   #4
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

> и, главное, проще?

Если макрос пишет что-то на лист, можно в обработчик Worksheet_Change написать Msgbox "Следующий шаг" .
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 17.10.2012, 00:45   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Казанский, гениально!!

Цитата:
Если макрос пишет что-то на лист, можно в обработчик Worksheet_Change написать Msgbox "Следующий шаг" .
А если не пишет - добавить, чтобы в цикле писал что-нибудь (хоть переменную цикла) на лист!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Блокирование спящего режима tryamsik Общие вопросы C/C++ 3 05.12.2011 22:46
блокировка безопасного режима DeDoK Общие вопросы Delphi 12 28.08.2010 10:24
Окно текстового режима Dmtr Помощь студентам 4 05.06.2008 20:02
байт режима адресации fermat_c Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 10.04.2008 15:39