Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Excel VBA - Start, Pause, Stop

1.5K
28 июня 2006 года
shtutsa
50 / / 27.03.2003
Есть надстройка над Excel, которая реализует алгоритм оптимизации, т.е. в процессе работает цикл с выходом по условию.
Запускается этот цикл с пользовательской CommandBar по кнопке Start.
Хочется дать пользователю досрочно прекратить данный цикл (обсчет может идти достаточно долго) по нажатию кнопки Stop с той же панели.
Как это сделать?

1. Во время счета в цикле макрос назначенный кнопке Stop при ее нажатии не обрабатывается. Система отображает песочные часы и на нажатие кнопки Stop не реагирует.
2. во время счета Application.ScreenUpdating=False
16K
28 июня 2006 года
kostyanet
24 / / 23.06.2006
Добавить в цикле DoEvents, кнопке Stop свойство Cancel поставить в True. Тогда нужно просто будет давить Esc до посинения.

Еще можно использовать API функцию:

 
Код:
Declare Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As Long) As Integer

Public Const VK_ESCAPE = &H1B

Public Function isKeyPressed() As Boolean
    DoEvents
    If (GetKeyState(VK_ESCAPE) And &H80) = &H80 Then isKeyPressed = True
End Function


И включить ее в тот цикл и все.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог