gpt4 book ai didi

vba - 如何在计时器到期时关闭 InfoBox.Popup?

转载 作者:行者123 更新时间:2023-12-04 21:49:01 25 4
gpt4 key购买 nike

我在 Outlook 2013 中从其他帖子中拼凑出这个测试程序。

它应该会显示一个弹出框,然后在 3 秒后关闭。

它永远不会关闭。

Sub MessageBoxTimer()
Dim AckTime As Integer, InfoBox As Object
Set InfoBox = CreateObject("WScript.Shell")

AckTime = 3
Select Case InfoBox.Popup("Click OK (this window closes automatically after 3 seconds).", _
AckTime, "This is your Message Box", 0)
Case 1, -1
Exit Sub
End Select
End Sub

最佳答案

一些研究表明,这可能是某些 MS Office 应用程序中的错误。我的依据是 thisthis似乎没有说任何暗示您以错误方式使用命令的内容,并且 this表明其他用户已经设法让这段代码准确地工作。

我在运行 Excel 和 Office 365 的 Windows PC 上对此进行了测试,并遇到了与您相同的问题 - 消息框已显示,但未关闭。我找到了建议的解决方法 here ,并且该页面上的讨论可能会引起您的兴趣(尤其是一位用户对尝试向 Microsoft 提交有关 VBA 的错误报告的描述)。由名为ウィンドウズスクリプトプログラマ 的用户提出的解决方案是通过声明一个外部函数来调用 native user32.dll - this。页面有一些如何使用 VBA 调用 C dll 的示例。据说 MessageBoxTimeout 函数没有被微软记录,但你可以找到很多关于它的信息 here .

另一个对我有用的选项是使用 mshta.exe 运行对 Shell.Popup 的 vbscript 调用:

Function Test()

Dim Shell
Set Shell = CreateObject("WScript.Shell")
Shell.Run "mshta.exe vbscript:close(CreateObject(""WScript.shell"").Popup(""Test"",3,""Message""))"

End Function

要让它处理更复杂的消息,您可能需要转义一些字符。还有一个 SO 问题 here这显示了 mshta 在 shell/控制台中执行 vbscript 的能力的其他用途。

最后,正如一位用户所建议的,您可以简单地创建一个自定义用户表单,其中包含一个倒计时然后自行关闭的 doevents 循环。

关于vba - 如何在计时器到期时关闭 InfoBox.Popup?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31141775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com