使用Excel VBA,在窗体Label中根据变量值按照时:分:秒倒计时。
比如,当A=150时,则按2:30:00开始倒计时。剩余5分钟时,弹出消息框提示。问题一旦解决,我会追加50的。谢谢大家了。...
比如,当A=150时,则按2:30:00开始倒计时。剩余5分钟时,弹出消息框提示。
问题一旦解决,我会追加50的。谢谢大家了。 展开
问题一旦解决,我会追加50的。谢谢大家了。 展开
6个回答
展开全部
按alt+F11键,打开VBA窗口,双击sheet1,将下方的代码复制到打开的窗口中;
- 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 - 在A1单元格输入倒计时开始的小时数,如3个小时“3:00”格式自定;
点击“开发工具”-“插入”-“表单控价”,插入一个按钮,打上想要的文字;
在按钮上右键,指定宏,选择刚才编辑的宏,确定,
点击按钮,就开始计时了,低于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小时的状态 如果发生的话……自己琢磨吧 比较简单
以为会有多复杂的程序哪 为什么不直接说你要做什么啊 给了答案 似乎连看都没看……
可以增加一段代码调用 一个子程序代码
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小时的状态 如果发生的话……自己琢磨吧 比较简单
以为会有多复杂的程序哪 为什么不直接说你要做什么啊 给了答案 似乎连看都没看……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
假设你的窗体名称为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,没有动。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看对你是否有帮助
更多追问追答
追问
对不起,我是要根据一个变量值进行倒计时的,而且是在窗体Label控件上显示的。单元格的网上很多。
追答
举一反三啊,你可以把表中的结束时间设为窗体中的某个对象即可
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询