Самый простой способ сделать это - выполнить оператор End
в ближайшем окне.
Однако это уничтожит все сохраненные состояния - т.е. все ваши переменные уровня модуля, все статические переменные во всех процедурах.и т. д. И это круто;Unload
и Terminate
события не запускаются и т. Д.:
http://msdn.microsoft.com/en-us/library/gg251671.aspx
(я отредактировал материал ниже после того, как перечитал ваш вопрос ...)
Чтобы вызвать потерю состояния только в одной подпрограмме, вы можете вручную закомментировать объявление isSet
, а затем восстановить его.В VBE есть настройка, которую вы можете установить в меню Инструменты ... Параметры, вкладка Общие, которая будет уведомлять вас о таких случаях потери состояния.(Однако он не предупреждает о вызове End
, вероятно, потому, что в этом случае вам не нужно никакого предупреждения.)
Вы не просили об этом, но если вы хотите бытьв состоянии сбросить одну статическую переменную в одной процедуре без редактирования какого-либо кода , вам придется сделать что-то нехорошее, например:
Public Sub assignVars(Optional reset As Boolean)
Static isSet As Integer
If reset Then
isSet = 0
Exit Sub
End If
If isSet <> 1 Then
isSet = 1
End If
End Sub
Обратите внимание, что мне пришлось сделать вашу процедуруPublic
, чтобы вы могли вызывать его из непосредственного окна с параметром True
, когда хотите сбросить.
Если вам нужно какое-то состояние, доступное извне вашей процедуры,в этом случае для возможности его ручного сброса вы можете рассмотреть переменную уровня модуля , а не Static
процедуру уровня один.Тогда ваша подпрограмма может остаться на Private
, ее интерфейс не будет испорчен для сброса, и вы можете вручную связываться с переменной уровня модуля.