有人可以提供一个洞察我崩溃的原因,我似乎无法解决这个问题。 我想学习VBA并需要一些建议。
sub timer()
dim second
second = 1.15740740740741e-05
'this is the amount excel counts as a second
line1:
application.wait "00:00:01"
Range("a1").value = Range("a1").value - second
if not range("D2").value = 0 then
Goto line1
else
Msgbox("Countdown ended")
End if
end sub
答案 0 :(得分:1)
我确定你没有计划航天飞机发射时间或任何关键时刻。但是如果你想确保你的倒计时不超过30秒,你可以使用定时器功能。这是一个例子。
Sub NewTimer()
Dim Start As Single
Dim Cell As Range
Dim CountDown As Date
'Timer is the number of seconds since midnight.
'Store timer at this point in a variable
Start = Timer
'Store A1 in a variable to make it easier to refer
'to it later. Also, if the cell changes, you only
'have to change it in one place
Set Cell = Sheet1.Range("A1")
'This is the starting value. Timeserial is a good
'way to get a time
CountDown = TimeSerial(0, 0, 30)
'Set our cell to the starting value
Cell.Value = CountDown
'Keep executing this loop until A1 hits zero or
'even falls slightly below zero
Do While Cell.Value > 0
'Update the cell. Timer - Start is the number of seconds
'that have elapsed since we set Start.
Cell.Value = CountDown - TimeSerial(0, 0, Timer - Start)
'DoEvents release control ever so briefly to Windows. This
'allows Windows to do stuff like update the screen. When you
'have loops like this, your code appears frozen because it's
'not letting Windows do anything (unless you have this line)
DoEvents
Loop
End Sub
答案 1 :(得分:1)
如果它只是每秒倒计时,我想还有另一个选项可以在Excel中添加一个Timer功能。 尝试在Excel中搜索Application.OnTime函数,该函数使我们能够在Excel中使用Timer。 Related Article that explains how to add timer in Excel and make a macro run during that scheduled interval.
答案 2 :(得分:0)
这是执行此操作的最佳方式。
尝试使用以下代码:
Sub Countup()
Dim CountDown As Date
CountDown = Now + TimeValue("00:00:01")
Application.OnTime CountDown, "Realcount"
End Sub
Sub Realcount() 'Run this to count down your cell value
Dim count As Range
Set count = [E1] 'Put the range that you want to count down
count.Value = count.Value - TimeSerial(0, 0, 1)
If count <= 0 Then
MsgBox "Countdown complete."
Exit Sub
End If
Call Countup
End Sub