请教,在VBA 窗体控件Label上如何显示一个倒计时?比如30分钟的倒计时。谢谢。
展开全部
是窗体上的Label1控件?还是表格上的Label1控件?
下面的是表格上的Label1控件,如果你设计了窗体,把引用改一下就可以了。
双击标签开始10秒倒计时,再双击停止倒计时。
Dim tgtTm As Date, rmTm As Date, IsRun As Boolean
Const Intv = #12:00:01 AM#
Private Sub Label1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
If IsRun Then
Application.OnTime Now() + Intv, "'Sheet1.MyTimer'", , False
IsRun = False
Else
rmTm = #12:00:10 AM#
tgtTm = Now() + rmTm
Label1.Caption = Format(rmTm, "hh:mm:ss")
Application.OnTime Now() + #12:00:01 AM#, "'Sheet1.MyTimer'"
IsRun = True
End If
End Sub
'-----计时器-----
Private Sub MyTimer()
rmTm = tgtTm - Now()
If rmTm > 0 Then
Application.OnTime Now + Intv, "'Sheet1.MyTimer'"
IsRun = True
Else
rmTm = 0
IsRun = False
End If
Label1.Caption = Format(rmTm, "hh:mm:ss")
End Sub
追问
想麻烦您再指教下。谢谢您。
1)是在窗体上的Label。
2)是根据一个变量在倒计时。比如,A=60时,是完成60分钟的倒计时。
追答
1)把所有的ontime方法后面的过程名引用由Sheet1改为你的窗体名称就可以了。
2)时间变量是原来放在rmTm里面,你把这个变量的值设置一下就可以了。假如你的变量是A,那么,把rmTm = #12:00:10 AM#,改为: rmTm = A * #12:01:00 AM#
展开全部
Private Sub CommandButton1_Click()
st = Now()
t = CDate("00:30:00")
Label1.Caption = t
Do
DoEvents
If DateDiff("s", st, Now()) = 1 Then
st = Now()
t = DateAdd("s", -1, t)
If Minute(t) = 0 And Second(t) = 0 Then Exit Do
Label1.Caption = t
End If
Loop
End Sub
st = Now()
t = CDate("00:30:00")
Label1.Caption = t
Do
DoEvents
If DateDiff("s", st, Now()) = 1 Then
st = Now()
t = DateAdd("s", -1, t)
If Minute(t) = 0 And Second(t) = 0 Then Exit Do
Label1.Caption = t
End If
Loop
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询