VBA中利用WshShell对象轻易实现自消失的对话框

VBA中利用WshShell对象轻易实现自消失的对话框

前言

WshShell 对象功能强大,以前一直只是用它来打开其它程序。无意中发现它也提供一个popup 函数,利用这个函数可以轻易实现自消失的对话框。这可是以前要费好大力气曲折实现的功能,真是踏破铁鞋无觅处,得来全不费功夫。

关于WshShell

在网上查到的资料中,多数会用后引用的方法来创建WshShell对象:

Dim objWshShell As Object
Set objWshShell = CreateObject("WScript.Shell")

在之前的文章中也讲过了,这个办法执行时效率高,但是缺点是写代码时不会提示方法和属性,对初学都不友好。对初学者,推荐前引用方法,就是在Reference中加入对WshShell的引用(Windows Script Host Object Model):
VBA中利用WshShell对象轻易实现自消失的对话框
添加了这个引用后,就可以很方便地用以下方法使用:

Dim objWshShell As New WshShell

写代码时,会有提示:
VBA中利用WshShell对象轻易实现自消失的对话框

WshShell对象的popup函数(方法)

这个函数功能与MsgBox()函数用法类似,都返回一个Integer值,代表用户的选择。

示例代码:

Sub test()
    Dim objWshShell As New WshShell
    Dim intChoice As Integer
    Dim strMsg As String
    
    strMsg = "您输入的密码不正确,是否需要继续尝试?" & vbCrLf & "请在5秒之内选择,否则默认为退出!"
    intChoice = objWshShell.Popup(strMsg, 5, "Remind", vbYesNo + vbQuestion + vbDefaultButton2 + vbApplicationModal)
    
    Select Case intChoice
        Case -1, vbNo
            MsgBox "你不想尝试了”"
        Case vbYes
            MsgBox "你还想继续"
    End Select
    
    Set objWshShell = Nothing
End Sub

参数

参数1: 要显示给用户的提示语
参数2: 对话框最长显示多久(单位:秒)
参数3: 对话框标题
参数4:选择类型

注意:
如果超时未选择,则返回值是 -1

如上述例子,参数4 可以是几个角度的组合,与MsgBox函数完全一样。下表中没有列出vbApplicationModal (表示显示在桌面最顶层)
VBA中利用WshShell对象轻易实现自消失的对话框
返回值列表如下:
VBA中利用WshShell对象轻易实现自消失的对话框

上一篇:vba for yingying


下一篇:手机有几种传感器,你知道吗?