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

比如,当A=150时,则按2:30:00开始倒计时。剩余5分钟时,弹出消息框提示。问题一旦解决,我会追加50的。谢谢大家了。... 比如,当A=150时,则按2:30:00开始倒计时。剩余5分钟时,弹出消息框提示。
问题一旦解决,我会追加50的。谢谢大家了。
展开
 我来答
一点设计演示
高粉答主

2016-01-29 · 职场/教育各类模板,衷于原创
一点设计演示
采纳数:874 获赞数:83613

向TA提问 私信TA
展开全部
  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分钟后,字体会变成红色。

匿名用户
2013-05-12
展开全部
不知道你的 具体代码是什么样子的
可以增加一段代码调用 一个子程序代码

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小时的状态 如果发生的话……自己琢磨吧 比较简单

以为会有多复杂的程序哪 为什么不直接说你要做什么啊 给了答案 似乎连看都没看……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tf日出
2013-05-12 · TA获得超过1076个赞
知道小有建树答主
回答量:648
采纳率:0%
帮助的人:259万
展开全部

假设你的窗体名称为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
追问
再麻烦您指教下。经测试,Label1始终停留在2:30:00,没有动。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
crazy0qwer
2013-05-12 · TA获得超过3301个赞
知道大有可为答主
回答量:4020
采纳率:71%
帮助的人:1320万
展开全部

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

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

追问
对不起,我没有讲清楚。我是在做一个考试系统。当剩余5分钟要提醒。是在Excel VBA窗体控件上倒计时。不是在Excel表格上。谢谢继续指导。
追答

我的不是在窗体上吗?是不是你下载搞混了?

下图是这次的界面。


本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sbpl007
2013-05-12 · TA获得超过654个赞
知道小有建树答主
回答量:560
采纳率:50%
帮助的人:465万
展开全部

看对你是否有帮助

更多追问追答
追问
对不起,我是要根据一个变量值进行倒计时的,而且是在窗体Label控件上显示的。单元格的网上很多。
追答
举一反三啊,你可以把表中的结束时间设为窗体中的某个对象即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式