Как я могу перезапустить мой макрос, используя событие щелчка, заменяя мой текущий метод таймера?

Я должен вручную обновить метки диаграмм, прежде чем создавать PDF для печати. Я включил таймер для приостановки макроса, позволяя мне внести определенное время на внесение изменений, прежде чем появится окно сообщения, и я обязан начать следующую часть моего макроса.

Это скорее хит и промах: некоторые метки диаграммы требуют большего количества манипуляций.

... и на удивление стрессовый.

sub PauseMacro
MsgBox "15s to change the labels positions of the pie charts"
t1 = Now
While Now < t1 + TimeSerial(0, 0, 15)
    DoEvents
Wend
MsgBox "Continuing with updating countries macro"
End Sub

(Этот полезный фрагмент кода пришел из ответа на этом форуме. Извинения не могу найти оригинальную ветку).

В идеале, кнопка окна сообщения, которая ждет меня (или других пользователей, которые унаследуют эту задачу), нажмет "Продолжить", как только мы внесем изменения в ярлыки.

К сожалению, я не могу понять, как взаимодействовать с диаграммой Excel, когда форма открыта.

Любые указатели очень приветствуются. Майкл.

1 ответ1

0

Найденный здесь на StackOverflow, Сиддхарт Раут
Сначала прочитайте ссылку, а затем вернитесь сюда для более подробной информации.

Мои советы: Сделайте форму очень простой и простой, сделайте так, чтобы она выглядела как привычный msgbox, к которому все привыкли. Единственное, что вам нужно будет включить - это кнопка продолжения в форме.

Вам все еще понадобится какой-то цикл, потому что загрузка формы на самом деле не остановит выполнение кода. Я бы использовал событие onload форм для кодирования таймера / цикла.

Кроме того, я не знаю ваш процесс ... но еще одна вещь, о которой я только что подумал ...Вы можете избежать всего, что связано с формой, если вы хотите создать лист и назвать его "Продолжить". И когда все ручные изменения будут сделаны, просто нажмите на лист с именем продолжить, и он загрузится из цикла, который работает, ожидая лист с именем "Продолжить" будет активным. Как только он станет активным, удалите лист и возобновите код. Это, наверное, самый быстрый способ сделать то, что вы хотите, это уродливо ... но большинство обходных путей лол.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .