У меня есть простой SUB в модуле Excel VBA, который запускается практически мгновенно и возвращает управление пользователю без заметной задержки - но только когда я запускаю подпрограмму из списка общедоступных подпрограмм Excel Alt-F8.
Когда я запускаю тот же саб, запуская его с кнопки или фигуры, он все равно работает почти мгновенно, НО на финишной обработке требуется около 3 секунд, чтобы вернуть управление пользователю.Во время этой паузы значок занятого круга Windows отображается на экране, и Excel не реагирует ни на какие нажатия клавиш.
Итак, почему запуск подпрограммы с помощью кнопки так отличается от запуска с Alt-F8?
(Я знаю, что сам саб работает очень быстро, так как я проверил его с помощью обертки Timer, которая подтверждает, что реальный код выполняется менее чем за 0,1 секунды)
Код показан здесь, но ямог бы подумать, что это почти не имеет значения, поскольку один и тот же код запускается, но просто запускается разными способами.
Public Sub RefDel()
IX = ActiveCell.Row: IY = ActiveCell.Column
If Cells(IX, 2) = "R" And (IY = PlnNor Or IY = PlnRef) Then
II = MsgBox("Remove Reference?", 292, Cells(IX, PlnRef))
If II = vbYes Then
ProtOff
NOF = Cells(IX, PlnNor)
Rows(IX & ":" & IX + NRoRef - 1).Delete Shift:=xlUp
Do While Cells(IX, 2) = "R" ' Renumber subsequent rows
Cells(IX, PlnNor) = NOF
NOF = NOF + 1
IX = IX + NRoRef
Loop
Cells(IX - NRoRef, PlnRef).Select
ProtOn
End If
Else
MsgBox "Select a Reference", vbCritical, "Delete Reference"
End If
End Sub