Excel错误消息框输出写入单元格

在我的一个Excel项目中,我有一个“保存检查”function,如果工作簿在过去的25分钟内没有保存,它会提示用户采取一些措施( MsgBox )。

此方法调用Application.OnTime来安排下一个警报,一旦保存,将被重新安排。

今天,我们看到一个错误消息框的内容(和“Microsoft Excel”和“确定”的附加文本)打印出来的工作表,覆盖单元格的内容。

根据用户没有macros在后台运行,唯一采取的行动是工作表之间切换。 这些表没有事件触发的代码。

我虽然OnTime是安全的方法,但该错误只是吓坏了我。

我已经做了一些研究,试图find关于这个问题的文件,但不能。 我相信这一定是一生中一次可能发生的低概率事件。

任何意见,如果我应该保持这段代码或擦除?
提前谢谢了。

'编辑1 – 添加由OnTime函数调用的代码

 Public Sub NeedToBeSaved() ' ====================================================================== ' Description : Periodically checks if the workbook needs to be saved. ' ' Comments : AfterSave method takes care of scheduling new check. ' Refresh it only if user has not saved ' ====================================================================== Dim nme As Name Dim dteLastSaved As Date Set nme = ThisWorkbook.Names(gsRNGNAME_LASTSAVED) dteLastSaved = Mid$(nme.value, 2) ' Debug Log ' --------- Debug.Print "----------------------" Debug.Print "Saving Periodic Check" Debug.Print "----------------------" Debug.Print "Worbook is saved:" & vbTab & ThisWorkbook.saved Debug.Print "Last time :" & vbTab & dteLastSaved If (ThisWorkbook.saved = False) Then MsgBox "File has not been saved in the last " & glAPP_SAVED_FREQ & _ " minutes, please consider saving your changes. " & _ vbCrLf & "(To prevent this message open in read-only mode)" Call SaveOnTimeCheck Else Debug.Print "Not rescheduled" End If End Sub 

这是我最可能的情况:

想象一下,有人在你的工作簿中做了一些复制粘贴操作。 他不看屏幕,而是在他的键盘上,因为他不熟悉打字盲。 MsgBoxpopup(他没有注意到,仍然注视着keybord)。 他不小心复制了MsgBox ctrl + c的内容并将其粘贴到工作簿中。

这增加了一个额外的“Microsoft Excel”和行“—”和“确定”的消息,如下所示:

 --------------------------- Microsoft Excel --------------------------- Your MsgBox message here … --------------------------- OK --------------------------- 

当MsgBox启动时,您可以通过按ctrl + c自行轻松地重现此操作。 然后粘贴到Excel中。

有两个可能的原因:

  1. 上面描述的手动复制粘贴场景(很可能)。
  2. 或者有一个macros在后台做复制粘贴操作,而MsgBox起来(我不是100%确定,但我认为这是不可能的,但如果是这样,你应该能够重现该问题)运行。