专栏首页完美ExcelExcel实战技巧71: 自动响应消息框信息

Excel实战技巧71: 自动响应消息框信息

下面是在vbaexpress.com论坛上看到的一个很有意思的例子。

在示例工作簿中的代码如下:

Public Declare Function SetTimer& Lib "user32" (ByValhwnd&, _
    ByVal nIDEvent&,ByVal uElapse&, ByVal lpTimerFunc&)
Private Declare Function KillTimer& Lib "user32"(ByVal hwnd&, _
    ByVal nIDEvent&)
Public Const NV_INPUTBOX As Long = &H5000
 
Public Sub TimerProc(ByVal hwnd As Long, ByVal uMsg As Long, ByValidEvent As Long, ByVal dwTime As Long)
    SendKeys "%Y"
    KillTimer hwnd, idEvent
End Sub
 
Sub test()
    With Application
        .Calculation =xlCalculationManual
        .ScreenUpdating =False
    End With
 
    Dim targetworkbook AsWorkbook
 
    Dim usersave As VbMsgBoxResult
 
    Set targetworkbook =Workbooks.Open("C:\test.xlsm", UpdateLinks:=0)
 
    Calculate
    targetworkbook.Activate
    SetTimer 0, NV_INPUTBOX,1000, AddressOf TimerProc
    Application.Runtargetworkbook.Name & "!tester"
 
    targetworkbook.Activate
 
    With Application
        .Calculation =xlCalculationAutomatic
        .ScreenUpdating =True
    End With
 
End Sub

运行test过程,将打开C盘中名为test.xlsm的工作簿,并弹出如下图1所示的消息框。

图1

如果你在5秒内没有响应消息框,也就是说,没有单击“确定”按钮或者“取消”按钮,那么在5秒后会关闭该消息框并弹出“超时”消息框,如下图2所示。

图2

在工作簿test.xlsm中的代码如下:

Sub tester()
    TimedMsgBox
End Sub
 
Sub TimedMsgBox()
    Dim cTime As Long
    Dim WSH As Object
 
    Set WSH =CreateObject("WScript.Shell")
    cTime = 5 '5 秒
    Select CaseWSH.Popup("打开Excel文件?!", cTime, "询问", vbOKCancel)
        Case vbOK
            MsgBox "你单击了确定"
        Case vbCancel
            MsgBox "你单击了取消"
        Case -1
            MsgBox "超时"
    End Select
End Sub

很有意思!有兴趣的话,可以试试。

欢迎分享本文,转载请注明出处。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

本文分享自微信公众号 - 完美Excel(excelperfect),作者:fanjy

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Excel实战技巧44: 用标签模拟按钮效果并显示颜色

    在设计用户窗体时,我们经常会用到按钮,以便用户单击执行相应的程序命令。其实,我们还可以使用标签来生动地模拟按钮效果,如下图1所示。

    fanjy
  • Excel应用实践12:在用户窗体中添加、查找和编辑数据记录

    在Excel中,我已经创建了一个输入数据的用户窗体,用于在工作记录工作表中添加新数据记录。最近,老板提出了新的需求,要通过该用户窗体能够编辑数据记录,增强其功能...

    fanjy
  • Excel实战技巧77: 实现在当前工作表和前一个使用的工作表之间自由切换

    Windows有一个另人喜爱的快捷键Alt+Tab,可以在当前应用程序和前一个使用的应用程序之间来回切换。Excel也有两个快捷键:Ctrl+PageUP和Ct...

    fanjy
  • VB.NET 结合Access数据库开发的含有<验证码>系统登录示例

    巴西_prince
  • 零基础VB教程066期:贪吃蛇游戏开发第二节 让蛇动起来

    原则:不能让蛇进行往返,通过控制按键的值与原方向的值的差值的绝对值不等于2,来赋值

    刘金玉编程
  • 零基础VB教程067期:贪吃蛇游戏开发第三节 撞墙会挂的

    刘金玉编程
  • B4A 调用谷歌翻译api进行翻译

    Google 翻译是谷歌公司提供一项免费的翻译服务,可提供103 种语言之间的即时翻译,支持任意两种语言之间的字词、句子和网页翻译。可分析的人工翻译文档越多,译...

    巴西_prince
  • VBA 发票数据解析

    巴西_prince
  • 刘金玉的零基础VB教程068期: 贪吃蛇游戏开发第四节 随机生成彩色食物

    视频讲解https://v.qq.com/x/page/y0935wgouhg.html

    刘金玉编程
  • 一起学Excel专业开发27:使用类模块创建对象6

    这里,我们不再像《一起学Excel专业开发26:使用类模块创建对象5》中那样,在CCells类模块中引发ChangeColor事件,而是创建一个触发类模块来取代...

    fanjy

扫码关注云+社区

领取腾讯云代金券