Я только что придумал этот аккуратный обходной путь
var firstChar = Array(string)[0]
Вам нужны DoEvents и переменная, область действия которой превышает область действия того, что вы выполняете. То есть, если это просто процедура, вам понадобится переменная уровня модуля. Если это более одного модуля, вам нужна глобальная переменная. См. Здесь
Обычно движок VB связывает процессор, пока это не будет сделано. Однако с помощью DoEvents VB позволяет процессору работать со всем, что находится следующим в очереди, а затем возвращаться к VB.
Я не думаю, что есть способ сделать это так, как вы хотели бы, чтобы он работал. VBA - это язык сценариев, поэтому, когда вы начинаете свою процедуру, она будет работать, пока не будет завершена. Если бы у вас была где-то еще одна кнопка, которая даже БЫЛА позволяла вам щелкнуть по ней во время работы исходной процедуры, я не уверен, как вы могли бы ссылаться на эту процедуру и остановить ее.
Вы могли бы сделать что-то вроде запроса пользователя, хотят ли они contine, но это заставит его работать еще дольше.
Также вы можете сделать так, чтобы ваша процедура проверяла условие вне Excel и продолжала работать, пока оно истинно. Что-то простое может быть проверка, находится ли определенный текстовый файл в папке. Если вы хотите, чтобы процедура остановилась, откройте папку и переместите файл. На следующей итерации вашего цикла он не увидит файл и не перестанет работать. Тупой, неэффективный, и не элегантно, но сработает. Вы также можете проверить ячейку, флажок, радиокнопку, в основном любой элемент управления на другом листе Excel, запущенном в другом экземпляре Excel. Опять неуклюже.
CTRL + Break работает. Примите это и двигайтесь дальше. Однако есть один интересный трюк: если вы защитите свой код паролем и они нажмут CTRL + Break, опция отладки будет недоступна, и они получат только Continue или End.
Если это код, который часто запускается, у вас есть рассматривали сценарий чего-то, что запускает его в то время, когда человек не использует компьютер? Раньше я запускал макросы очистки экрана telnet, на просмотр всех виджетов у меня уходили часы, но я всегда запускал их либо на отдельном компьютере, либо когда меня не было (по ночам / в выходные).
в основном любой элемент управления на другом листе Excel, работающий в другом экземпляре Excel. Опять неуклюже.CTRL + Break работает. Примите это и двигайтесь дальше. Однако есть один интересный трюк: если вы защитите свой код паролем и они нажмут CTRL + Break, опция отладки будет недоступна, и они получат только Continue или End.
Если это код, который часто запускается, у вас есть рассматривали сценарий чего-то, что запускает его в то время, когда человек не использует компьютер? Раньше я запускал макросы очистки экрана telnet, на просмотр всех виджетов у меня уходили часы, но я всегда запускал их либо на отдельном компьютере, либо когда меня не было (по ночам / в выходные).
в основном любой элемент управления на другом листе Excel, работающий в другом экземпляре Excel. Опять неуклюже.CTRL + Break работает. Примите это и двигайтесь дальше. Однако есть один интересный трюк: если вы защитите свой код паролем и они нажмут CTRL + Break, опция отладки будет недоступна, и они получат только Continue или End.
Если это код, который часто запускается, у вас есть рассматривали сценарий чего-то, что запускает его в то время, когда человек не использует компьютер? Раньше я запускал макросы очистки экрана telnet, на просмотр всех виджетов у меня уходили часы, но я всегда запускал их либо на отдельном компьютере, либо когда меня не было (по ночам / в выходные).
заключается в том, что если вы защитите свой код паролем, и они нажмут CTRL + Break, опция отладки будет недоступна, и они получат только Continue или End.Если это код, который часто запускается, рассматривали ли вы сценарий того, что запускает его во время раз, когда человек не пользуется компьютером? Раньше я запускал макросы очистки экрана telnet, на просмотр всех виджетов у меня уходили часы, но я всегда запускал их либо на отдельном компьютере, либо когда меня не было (по ночам / в выходные).
заключается в том, что если вы защитите свой код паролем, и они нажмут CTRL + Break, опция отладки будет недоступна, и они получат только Continue или End.Если это код, который часто запускается, рассматривали ли вы сценарий того, что запускает его во время раз, когда человек не пользуется компьютером? Раньше я запускал макросы очистки экрана telnet, на просмотр всех виджетов у меня уходили часы, но я всегда запускал их либо на отдельном компьютере, либо когда меня не было (по ночам / в выходные).