Excel Sub очень медленно возвращает контроль - PullRequest
0 голосов
/ 01 июня 2018

У меня есть простой 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...