我有一个需要运行更新的宏。
如果Excel处于编辑状态,我需要一个宏来进行Excel退出编辑模式,即控制。
答案 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
您应该事先调用此宏,可能是在打开的工作簿事件中 此外,可以保持循环,并在需要时重复更新。
您应该检查此策略是否不会干扰您的特定工作表中使用的其他功能。