宏以强制Excel退出编辑模式

时间:2010-08-25 21:28:05

标签: excel excel-vba vba

我有一个需要运行更新的宏。

如果Excel处于编辑状态,我需要一个宏来进行Excel退出编辑模式,即控制。

2 个答案:

答案 0 :(得分:2)

这是不可能的,因为Excel在单元格编辑模式下不会运行任何宏。

答案 1 :(得分:1)

执行此操作的自然方法是使用Application.OnTimer方法,但它具有您刚刚提到的“编辑问题”。在用户离开编辑模式之前,被调用的函数不会被执行。

您可以克服这个问题:此解决方案效率不高,但您可以从宏中获得控制权并从计时器(或您选择的任何其他事件)中重新获得控制权。

以下代码来自Excel计时器功能帮助。

当计时器倒计时(或者您正在等待其他事件)时,您可以继续处理工作表。

Sub a()
  Dim PauseTime, Start, Finish, TotalTime
  If (MsgBox("Press Yes to fire update in 1000 secs", 4)) = vbYes Then
      PauseTime = 1000    ' Set duration 1000 secs or whatever.
      Start = Timer    ' Set start time.
      Do While Timer < Start + PauseTime
          DoEvents    ' Yield to other processes - THIS IS THE TRICK
      Loop
      Finish = Timer    ' Set end time.
      TotalTime = Finish - Start    ' Calculate total time.
      MsgBox "Paused for " & TotalTime & " seconds" 'Program your update HERE
   Else
     End
  End If
End Sub

您应该事先调用此宏,可能是在打开的工作簿事件中 此外,可以保持循环,并在需要时重复更新。

您应该检查此策略是否不会干扰您的特定工作表中使用的其他功能。