ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я не разработчик, просто обычный парень, пытающийся использовать VBA в своем собственном проекте. В первый раз, когда я пишу в стеке, я прошу прощения, если я нарушаю какое-либо неписанное правило сообщества.
Привет всем, я пытаюсь запустить несколько подпрограмм, поэтому следующая начинается только тогда, когдапредыдущий закончен.
Проблема в том, что во время выполнения Excel продолжает сбой, а если я запускаю каждую подпрограмму вручную, у них вообще не возникает проблем.
До сих пор я использовал этот метод: сначала у меня естьмини-подпрограмма, которая присваивает значение = 1 глобальной переменной "oneclick", а затем вызывает первый макрос цепочки
, затем в каждом подпрограмме есть крошечный кусочек непосредственно перед концом:
sub macro1()
...macro code...
if oneclick=1 then
call macro2
end if
end sub
и т. Д. Для всех сабвуферов, пока последний сабвуфер не сбросит переменную oneclick в ноль.
Я понятия не имею, почему происходит сбой. Я вижу, что на самом деле ни одна из этих подпрограмм действительно не закрывается до самого конца последней, будет ли это нарушать какие-либо ограничения кода? Я был бы на самом деле счастливее иметь один основной саб, который направляет процесс, а не полагаться на подобный кладж! Любое предложение?
РЕДАКТИРОВАТЬ: о вау уже так много ответов .. теперь я попробую некоторые из них. Отвечая на некоторые из ваших вопросов:
1) сбой действительно является чем-то внезапным, даже не сообщением об ошибке, просто Excel завершает работу и снова открывается, в том же состоянии, в котором он был при первом запуске цепочки макросов.
2) Я согласен с вами, ребята, что должен быть мастер-саб, вызывающий меньшие, однако в прошлый раз, когда я пытался, у меня возник ряд проблем, потому что один макрос должен работать с результатами предыдущего искоро. Как вы говорите VBA ждать, пока предыдущий саб закончился?