Excel Sub在返回控制时非常慢

时间:2018-05-31 21:10:29

标签: excel-vba vba excel

我在Excel VBA模块中有一个简单的SUB,几乎可以立即运行,并且可以向用户提供控制,没有明显的延迟 - 但只有当我从Excel的Alt-F8公共子列表中运行sub时才会这样做。

当我通过从按钮或形状启动它来运行相同的子时,它仍然几乎立即运行但是在完成时需要大约3秒来将控制权交还给用户。在此暂停期间,屏幕上会显示Windows忙碌圈图标,Excel不响应任何按键操作。

那么,为什么从按钮启动一个sub可以与从Alt-F8启动一样不同呢?

(我知道sub本身运行得很快,因为我用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

0 个答案:

没有答案