ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 16469|回复: 23

[求助]如何让msgbox自动消失

[复制链接]

TA的精华主题

TA的得分主题

发表于 2007-2-23 18:41 | 显示全部楼层 |阅读模式
如题,求教高人:
如何让msgbox在它出现后1秒自动消失。(自动点确定键?)
谢谢

TA的精华主题

TA的得分主题

发表于 2007-2-23 19:38 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-2-23 19:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
调试过程很多msgbox,一个一个点太麻烦,可是又想知道msgbox里的内容。

求高人路过留下玉言

TA的精华主题

TA的得分主题

发表于 2007-2-23 19:46 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Public Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, _
    ByVal nIDEvent As Long, ByVal uElaspe As Long, _
    ByVal lpTimerFunc As Long) As Long
Public Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, _
    ByVal nIDEvent As Long) As Long
Dim TID As Long
Const Sec = "1"
Sub myMsgbox(myPrompt As String, Elapse As Integer, myTitle As String, Buttons As Integer)
CreateObject("Wscript.Shell").popup myPrompt, Elapse, myTitle, Buttons
End Sub
Sub testB()
    Dim msg As Integer
    TID = SetTimer(0, 0, Sec * 1000, AddressOf CloseTest)
    msg = MsgBox(Sec & "  Second Auto Closed")
    If msg = 1 Then KillTimer 0, TID
End Sub
Sub CloseTest(ByVal hWnd As Long, ByVal uMsg As Long, _
    ByVal idevent As Long, ByVal Systime As Long)
    Application.SendKeys "~", True
    KillTimer 0, TID
End Sub
不知道是哪位大虾、高人的代码了。[em08]

TA的精华主题

TA的得分主题

发表于 2007-2-23 20:28 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-2-23 20:36 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-2-23 21:05 | 显示全部楼层

这是山版主提供的代码,请参考:

http://club.excelhome.net/viewthread.php?tid=219419&replyID=&skin=0

Public nTime As Date
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Set Target = Target.Cells(1)
    If Target.Row = 1 Then Shapes("xinxi").Visible = False: Exit Sub
    Dim cTxt As String, nRow As Integer
    Dim Temp As String
    cTxt = ""
    nRow = Target.Row
    For i = 1 To 10
        Temp = Cells(nRow, i)
        Temp = IIf(Left(Temp, 1) = ".", "0", "") & Temp
        cTxt = cTxt & Chr(13) & " " & Temp
    Next
    Label2.Caption = cTxt '更新信息窗口中的文字
   
    With Shapes("xinxi")
   
        '动态改变控件的垂直位置
        If Target.Offset(1, 0).Top - Cells(ActiveWindow.ScrollRow, 1).Top + 130 > ActiveWindow.UsableHeight Then
            .Top = Cells(ActiveWindow.ScrollRow, 1).Top + ActiveWindow.UsableHeight - 130
        Else
            .Top = Target.Offset(1, 0).Top
        End If
       
        '动态改变控件的水平位置
        If Target.Offset(0, 1).Left - Cells(1, ActiveWindow.ScrollColumn).Left + 270 > ActiveWindow.Width Then
            .Left = Target.Left - 270
        Else
            .Left = Target.Offset(0, 1).Left
        End If

    End With
   
    nTime = Timer
    Shapes("xinxi").Visible = True '显示信息窗口
    Call XinxiVisible
End Sub

Sub XinxiVisible()
    Do While Timer - nTime < 10 '显示10秒
        DoEvents
    Loop
    Shapes("xinxi").Visible = False '隐藏信息窗口
End Sub

TA的精华主题

TA的得分主题

发表于 2007-2-23 21:18 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

凑个热闹,让程序等待休息5秒钟:

Application.Wait Now + TimeValue("00:00:05")

TA的精华主题

TA的得分主题

发表于 2007-2-23 21:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

那干嘛不用

 Debug.Print 变量

在监视窗口查看,即是程序结束了也仍然看得到~

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-2-24 09:20 | 显示全部楼层
msgbox是留给用户看的,不能省略。。。。


能否让VBA模拟键盘,输入一个回车键信号关闭msgbox?

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-28 17:51 , Processed in 0.041662 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表