Vba 从另一个文件关闭msgbox

Vba 从另一个文件关闭msgbox,vba,excel,Vba,Excel,我正在使用几个excel文件,每个文件都使用VBA进行一些计算。现在我正在处理一个文件,它将一个接一个地运行每个文件,并通过单击计算所有文件。不幸的是,在每个文件的计算结束时,都会出现Msgbox“Report updated”(报告已更新),我的宏会停止,并等待手动确认“OK”(确定),然后才会关闭第一个文件并打开下一个文件。 我无法使用msgboxes删除这一行,因为有些人只会使用一个文件,需要通知他们一切都已完成。 我的问题是:如何自动关闭此msgbox 提前感谢我认为这是不可能的,因为M

我正在使用几个excel文件,每个文件都使用VBA进行一些计算。现在我正在处理一个文件,它将一个接一个地运行每个文件,并通过单击计算所有文件。不幸的是,在每个文件的计算结束时,都会出现Msgbox“Report updated”(报告已更新),我的宏会停止,并等待手动确认“OK”(确定),然后才会关闭第一个文件并打开下一个文件。 我无法使用msgboxes删除这一行,因为有些人只会使用一个文件,需要通知他们一切都已完成。
我的问题是:如何自动关闭此msgbox


提前感谢

我认为这是不可能的,因为MsgBox是模态的。但是为什么宏一开始会显示它呢?您可以添加条件指令,检查其工作的图纸是否显示。比如:

If ActiveSheet.Name = wsProcessedSheet.Name Then MsgBox "Report updated"
因此,该消息将为普通用户显示,而不是为您的supermacro显示。或者,您可以仅为您的计算机禁用MsgBox:

If Environ("username")<> "your user name" Then MsgBox "Report updated"
如果环境(“用户名”)“您的用户名”,则MsgBox“报告已更新”

感谢您提出的有趣想法。 我刚刚想出了不同的解决办法。最初我有一个运行宏更新()的按钮

现在,我从该宏中删除了msgbox并创建了两个宏,如下所示:

Sub ButtonClick()
  Call Update
  Msgbox "Report updated"
End Sub

Sub Update()
  ...calculations....
End Sub
现在按钮正在运行宏按钮单击,在外部文件中我可以使用不包含msgbox的宏更新()


但我仍然想知道是否有任何方法可以确认msgbox警报,除非您修改代码,否则无法确认。如果有几个用户打开文件,其中一些用户需要msgbox,恐怕唯一的解决方案是修改代码并将其与
Environ(“用户名”)
组合,这样代码会检测到如果您打开文件,则没有msgbox,但不是您,然后显示msgbox。我建议您更改所有文件中的所有msgbox,并将其替换为
Application.Statusbar=“your info”
。在那里,您可以键入流程的运行方式以及完成所有操作后,只需键入
Application.StatusBar=“
,您就会将其重置为默认值(类似于就绪)。那么
Application.DisplayAlerts=False
呢?不幸的是,它只适用于系统警报,例如,当您为msgbox关闭文件时是否保存文件。
Sub ButtonClick()
  Call Update
  Msgbox "Report updated"
End Sub

Sub Update()
  ...calculations....
End Sub