Сбросить стек вызовов, или как сделать....

Автор Alex16, 17 ноября 2016, 17:08

0 Пользователи и 1 гость просматривают эту тему.

Alex16

Есть макрос, который может вызываться очень часто. Можно ли как-то это отследить и сделать так, что бы все вызовы сбрасывались до последнего. Определение последнего ну например в течении полсекунды больше не было вызовов, то обработать последний. Для чего это нужно. Вот макрос:

Sub ChangeListBox
  ....
  LoadData
End Sub

ChangeListBox привязан на изменение ЛистБокса. Вот если с клавиатуры стрелками бежать до нужного пункта, то будет выполнен LoadData много раз. Как бы этого избежать?
Использовать только мышь или Enter после выбора не вариант.

rami

Цитата: Alex16 от 17 ноября 2016, 15:08ChangeListBox привязан на изменение ЛистБокса. Вот если с клавиатуры стрелками бежать до нужного пункта, то будет выполнен LoadData много раз. Как бы этого избежать?
Если Список в диалоге, добавить кнопку "Выполнить" (и отвязать действие от списка, привязать к кнопке)

Alex16


rami

#3
Цитата: Alex16 от 17 ноября 2016, 15:31Список на листе.
Назначить событие "Нажатие клавиши" на список.
Sub main(e)
If e.KeyCode<>1280 Then Exit Sub 'если не "ENTER" выходим
'Какой-нибудь код
End Sub

Alex16

#4
Цитата: rami от 17 ноября 2016, 15:47Назначить событие "Нажатие клавиши" на список.
Хех.... :)
Цитата: Alex16 от 17 ноября 2016, 15:21Использовать только мышь или Enter после выбора не вариант.
Я думал может какие таймеры, флаги задействовать для задуманного. Ладно, наверное сейчас это не самое главное, остановлюсь пока на одном из трех вариантов.
1 забить на все(пусть вызывается LoadData, будут тормоза)
2 сделать по Enter'у
3 сделать диалогом.