使用Excel VBA,在窗体Label中根据变量值按照时:分:秒倒计时。

2025-03-11 06:11:03
推荐回答(5个)
回答1:

  1. 按alt+F11键,打开VBA窗口,双击sheet1,将下方的代码复制到打开的窗口中;

  2. Sub 倒计时()
            [a1].NumberFormatLocal = "h:mm:ss;@"
            [a1] = [a1] - 1 / 3600 / 24
        If [a1] < 1 / 60 / 24 Then
            [a1].Font.ColorIndex = 3
        Else
            [a1].Font.ColorIndex = 5
        End If
        If [a1] > 0 Then
             Application.OnTime Time + TimeSerial(0, 0, 1), "sheet1.倒计时", , True
        Else
            [a1] = "00:00:00"
        End If
    End Sub

  3. 在A1单元格输入倒计时开始的小时数,如3个小时“3:00”格式自定;
  4. 点击“开发工具”-“插入”-“表单控价”,插入一个按钮,打上想要的文字;

  5. 在按钮上右键,指定宏,选择刚才编辑的宏,确定,

  6. 点击按钮,就开始计时了,低于1分钟后,字体会变成红色。

回答2:

不知道你的 具体代码是什么样子的
可以增加一段代码调用 一个子程序代码

A=150 '分钟数

……………………
Load UserForm1
UserForm1.Show
UserForm1.TextBox2 = A/60/24 ‘转换成时间数系列 作为窗体中的一个隐藏文本框需要增加
UserForm1.TextBox1 = Format(TextBox2, "h:mm:ss")
CALL 倒计时
……………………

Sub 倒计时()
N = UserForm1.TextBox2 - TimeSerial(0, 0, 1)
UserForm1.TextBox2 = N
If N > 0 Then
UserForm1.TextBox1 = Format(N, "h:mm:ss")
UserForm1.Show False
Application.OnTime Time + TimeSerial(0, 0, 1), "倒计时"
Else
Unload UserForm1 '这里你可以自己酌情处理 现在是关闭窗体
End If
End Sub

上面的是你自己原来的代码部分 省略号中间部分 是你要增加进去的 如果你的代码 就是在原窗体上进行的话,你可以不用load …

下面的是计时子程序

但是 你必须在你的窗体上 增加一个 隐藏的文本框(你要显示倒计时的也要变成文本框,不要使用label,文本框的格式 你也可以设置成类似 label 样式),这是作为 倒计时时的数据计算用的(因为考虑到了 你的时间 可能会有超过24小时的时候) ……
其他再有问题 再追问吧……这种办法简单易行
当然 这里 文本框显示格式 你还可以 使用其他格式来显示 超过24小时的状态 如果发生的话……自己琢磨吧 比较简单

以为会有多复杂的程序哪 为什么不直接说你要做什么啊 给了答案 似乎连看都没看……

回答3:

假设你的窗体名称为Form1,点击Command1开始倒计时,那么可用如下代码:

Dim tgtTm As Date, rmTm As Date
Const Intv = #12:00:01 AM#
'----点击Command1按钮开始计时--------
Private Sub Command1_Click()
Dim A
A=150
StartTimer A
End Sub
'-------开始计时子程序-----------
Sub StartTimer(ByVal A)
rmTm = A * #12:01:00 AM#
tgtTm = Now() + rmTm
Label1.Caption = Format(rmTm, "hh:mm:ss")
Application.OnTime Now() + #12:00:01 AM#, "Form1.MyTimer"
End Sub
'-----计时器-----
Private Sub MyTimer()
Static hAlt As Boolean
rmTm = tgtTm - Now()
If rmTm > 0 Then
If rmTm < #12:05:00 AM# And Not hAlt Then
MsgBox "剩余时间:" & rmTm, vbInformation
hAlt = True
End If
Application.OnTime Now + Intv, "Form1.MyTimer"
Else
rmTm = 0
End If
Label1.Caption = Format(rmTm, "hh:mm:ss")
End Sub

回答4:

没有弹出对话框,因为弹出对话框后要点击确定按钮才会继续计时,不知道你这里要怎么处理。

你再追问说清楚吧,弹出对话框需不要需要继续计时?

回答5:

看对你是否有帮助