Как отключить и включить макросы на лету? - PullRequest
5 голосов
/ 28 сентября 2011

Я хотел бы протестировать приложение Excel VBA, которое я создал.
Однако код VBA портится с видимостью ячеек, и это вредно при редактировании листа.

Есть ли опция включения и отключения макросов на лету без необходимости

Close the sheet
Change the macro settings
Reopen the sheet
Close the sheet
Change the macro settings.
etc.

Ответы [ 5 ]

10 голосов
/ 28 сентября 2011

Насколько я знаю, вы не можете включать / отключать макросы из открытой книги на лету .
Тем не менее, вам не нужно этого делать, потому что макросы запускаются только благодарящелчок пользователя.

Единственный случай, который я бы увидел, - это процедуры событий (Worksheet_Change или другие).
Затем можно создать процедуры для активации / деактивации событий и вызывать их с помощью кнопок в вашей рабочей книге:

Sub enableEvents()
    Application.EnableEvents = True
End Sub

Sub disableEvents()
    Application.EnableEvents = False
End Sub

Вы также можете попробовать эти советы на веб-сайте Криса Пирсона , используя глобальные переменные, которые вы измените в зависимости от своих потребностей:

Public AbortChangeEvent As Boolean

и проверьте, чтобы потом:

Private Sub Worksheet_Change(ByVal Target As Range)
    If AbortChangeEvent = True Then
        Exit Sub
    End If
    '
    ' rest of code here
    '
End Sub
4 голосов
/ 10 августа 2016

Вы также можете удерживать SHIFT при открытии документа для отключения макросов.

2 голосов
/ 06 марта 2015

Чтобы отключить макросы на лету, используйте «Application.EnableEvents = False» через окно Immediate в редакторе VBA (и «Application.EnableEvents = True», чтобы включить их снова).

1 голос
/ 13 ноября 2015

Начиная с Excel 2010 * на вкладке «Разработчик» есть опция, которая позволяет отключать макросы так же просто, как ABC. Режим дизайна позволяет вам сделать это!

* Может быть, даже более ранние версии.

0 голосов
/ 05 октября 2016

У меня Office 2013, и я нашел кнопку в окне VBA, которая сделала это для меня очень легко.

На панели инструментов есть кнопка воспроизведения, паузы и остановки.В Excel они фактически называются: Run Macro, Break и Reset.

Нажмите кнопку Break (пауза), и все запущенные макросы должны прекратиться.Я тестировал его только на одном макросе, но кажется разумным предположить, что это будет работать в целом.

Кроме того, я считаю, что эти кнопки были там для многих версий Excel, поэтому стоит проверить более ранние версии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...