Я делаю выпадающий внутри Excel, используя ComboBox и VBA. Мне удалось заставить его отправлять запросы к удаленному API, добавлять возвращенные данные в скрытый лист и обновлять параметры раскрывающегося списка в зависимости от результата API.
То, что я хочу сделать, это задушить запросы API. На данный момент кажется, что Excel не будет запускать сабвуфер, если он уже обрабатывает API-запрос. Это не идеально, потому что часто люди набирают более одного символа в быстрой последовательности. Я хотел бы добавить таймер для каждого дополнительного вызова, и если в течение ~ 250 мс не было нового вызова для вспомогательной функции, отправьте запрос API. Если в течение 250 мс будет сделан другой вызов, я хочу отменить выполнение этого саба.
Первоначально я попытался создать глобальный «process_id», в котором подпрограмма добавила бы 1 к текущему глобальному, установила бы свой локальный идентификатор на это значение, подождала x раз, проверила, является ли его локальный идентификатор === глобальным идентификатором, и если не выход саб. Однако теперь кажется, что вторая подпрограмма никогда не запускается, пока таймер ожидает x времени, поэтому первая подпрограмма все еще запускается, всего через x секунд (а вторая подпрограмма вообще никогда не запускается).
Как мне выполнить регулирование подфункций в Excel VBA, чтобы одна и та же подфункция могла быть запущена, пока первая ожидает?