Vba Excel错误消息框输出写入单元格
在我的一个Excel项目中,我有一个“保存检查”功能,如果工作簿在过去25分钟内没有保存,它将提示用户采取一些操作(Vba Excel错误消息框输出写入单元格,vba,excel,Vba,Excel,在我的一个Excel项目中,我有一个“保存检查”功能,如果工作簿在过去25分钟内没有保存,它将提示用户采取一些操作(MsgBox) 此方法调用Application.OnTime来计划下一个警报,并在保存后重新计划 今天我们看到一个错误,消息框的内容(以及带有“Microsoft Excel”和“OK”的附加文本)被打印到工作表中,覆盖了单元格内容 据用户称,没有宏在后台运行,所采取的唯一行动是在工作表之间切换。这些工作表没有事件触发代码 我原以为OnTime是一种安全的方法,但那个bug把我吓
MsgBox
)
此方法调用Application.OnTime
来计划下一个警报,并在保存后重新计划
今天我们看到一个错误,消息框的内容(以及带有“Microsoft Excel”和“OK”的附加文本)被打印到工作表中,覆盖了单元格内容
据用户称,没有宏在后台运行,所采取的唯一行动是在工作表之间切换。这些工作表没有事件触发代码
我原以为OnTime
是一种安全的方法,但那个bug把我吓坏了
我做了一些研究,试图找到关于这个问题的文档,但没有。我相信这一定是一个低概率的事件,可能一生只发生一次
关于我应该保留或删除此代码有何评论?非常感谢 '编辑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
对我来说,这是最可能的情况: 假设有人在您的工作簿中执行复制粘贴操作。他不看屏幕,而是看键盘,因为他不熟悉打字。MsgBox弹出(他没有注意到,仍然盯着keybord)。他不小心复制了MsgBox ctrl+c的内容并将其粘贴到工作簿中 这会在邮件中添加额外的“Microsoft Excel”和“--”和“OK”,如下所示:
---------------------------
Microsoft Excel
---------------------------
Your MsgBox message here …
---------------------------
OK
---------------------------
当MsgBox启动时,您可以通过按ctrl+c来轻松地复制此操作。然后将其粘贴到Excel中
这可能有两个原因:
对我来说,这是最可能的情况: 假设有人在您的工作簿中执行复制粘贴操作。他不看屏幕,而是看键盘,因为他不熟悉打字。MsgBox弹出(他没有注意到,仍然盯着keybord)。他不小心复制了MsgBox ctrl+c的内容并将其粘贴到工作簿中 这会在邮件中添加额外的“Microsoft Excel”和“--”和“OK”,如下所示:
---------------------------
Microsoft Excel
---------------------------
Your MsgBox message here …
---------------------------
OK
---------------------------
当MsgBox启动时,您可以通过按ctrl+c来轻松地复制此操作。然后将其粘贴到Excel中
这可能有两个原因:
Charlie-你需要编辑问题并在调用
OnTime
时包含代码。“覆盖单元格内容”--你是说单元格内容在屏幕上被遮挡/覆盖了,还是实际单元格内容被更改了?要添加我正在使用的代码吗?请稍候。问题是,实际的单元格内容被应该在消息框中打印出来的字符串更改了。你的病毒防护有多好?这实际上是一个很好的观点。我在两台不同的计算机上运行了多次检查。但不确定相关计算机是否具有不同的安全策略。Will check.Charlie-你需要编辑问题并在调用时包含代码。OnTime
覆盖单元格内容”-你是说单元格内容在屏幕上被遮挡/覆盖了,还是实际单元格内容被更改了?要添加我正在使用的代码吗?请稍等。问题是,实际的单元格内容被应该在消息框中打印出来的字符串更改了。你的病毒防护有多好?这实际上是一个很好的观点。我在两台不同的计算机上运行了多次检查。但不确定相关计算机是否具有不同的安全策略。我会检查的。哈哈,这正是消息。。。我从未检查过是否可以从消息框中复制值(clap-clap)。我刚刚与用户确认,他说他确实在及时复制/粘贴。非常感谢你的回答!哈哈,这正是信息。。。我从未检查过是否可以从消息框中复制值(clap-clap)。我刚刚与用户确认,他说他确实在及时复制/粘贴。非常感谢你的回答!