设定timer1的interval=0 button1_click() timer1.interval=1000 starttimer=now() end sub...timer1.timer() if now()-starttimer>设定的时间值 then msgbox "时间到。",vbinformation end endif end sub
送你一个延时函数 Public Function delay(mins%, secs%, Optional ByRef stopflag) As Long '延时函数 Dim endofdelay endofdelay = DateAdd("n", mins, Now) endofdelay = DateAdd("s", secs, endofdelay) delay = 0 Do While (Now < endofdelay) DoEvents If Not IsMissing(stopflag) Then If stopflag Then delay = 1 stopflag = False Exit Do End If End If Loop 'callbyname()
1.只需要在点击按钮的那个界面装上timer控件 2.这个控件的enable属性起初要设为true并且interval=你想要的值(1-65535ms) 并且interval=你想要的值(1-65535ms) 注意: 当interval = 0,表示停止,不发送timer事件,相当于关闭定时器;Enabled=true时,打开计时器,false时关闭计时器,不论interval值为多少Enabled属性和Interval属性一起控制定时器.Private Sub Command1_Click() Timer1.Enabled = True Timer1.Interval = 20 End SubPrivate Sub Timer1_Timer() Timer1.Enabled = False Timer1.Interval = 0 Load Form2 Form2.Show End Sub
看看这个: Private Sub Command1_Click() Timer1.Enabled = True Timer1.Interval = 1000 starttime = Now() End SubPrivate Sub Timer1_Timer() If Now() - starttime > 1000 Then MsgBox "时间到!", vbInformation Timer1.Enabled = False Timer1.Interval = 0 End If End Sub
Private Sub begin_Click() Timer1.Enabled = True End Sub Private Sub Timer1_Timer() For i = 0 To 10 startimer = Now() If Int(Now() - startimer) > 9000 Then i = i + 1 End If If i > 10 Then Exit For End If Next i MsgBox "时间到!!!", vbOKOnly, "阶段测验" Form1.Show Form1.score.Enabled = True Form1.begin.Enabled = False Timer1.Enabled = False Timer1.Interval = 0 End Sub
需要那么复杂吗?我看要实现楼主你的功能,根本就无需用到TIMER控件. 直接用DATEDIFF函数和NOW()函数就行了: 1.在COMMAND_CLICK中得到开始时间,如:STARTTIME=NOW() 2.用DATEDIFF函数得到时间的差值,如:DATEDIFF("N",STARTTIME,NOW()) 他返回的是两个时间的差值. 你可以在每次进入其它窗体时进行计算. 返回单位: H 小时 N 分 S 秒 如果差值为30那么就做你想做的事
To: butterfly_79(西伯利亚蝴蝶) Timer的Enable属性初始值设为True,程序中不用改。Timer的Interval属性值初始设置为0。 使用以下代码试试: static TT as IntegerPrivate Sub begin_Click() Timer1.Interval = 60 * 1000 End SubPrivate Sub Timer1_Timer() if Timer1.Interval = 0 then exit sub '如果Interval已经为0则什么也不做就退出 TT = TT + 1 if TT > 20 then TT = 0 Timer1.Interval = 0 MsgBox "时间到!!!", vbOKOnly, "阶段测验" endif Form1.Show Form1.score.Enabled = True Form1.begin.Enabled = False End Sub
private startimer as date '全局变量 Private Sub begin_Click() Timer1.Enabled = True timer1.interval=60 * 1000 startimer = Now()End Sub Private Sub Timer1_Timer() if DateDiff("n", Now, startimer)>30 then '比较两个时间相差的分 MsgBox "时间到!!!", vbOKOnly, "阶段测验" Form1.Show Form1.score.Enabled = True Form1.begin.Enabled = False Timer1.Enabled = False Timer1.Interval = 0 end if End Sub
'3个TextBox分别为分、秒、微秒,如果需要可以继续加时、天、年…… :)Private Sub Command1_Click() Timer1.Enabled = Not (Timer1.Enabled) End SubPrivate Sub Form_Load() Form1.Text1.Text = 0 Form1.Text2.Text = 0 Form1.Text3.Text = 0
Timer1.Interval = 10 Timer1.Enabled = False End SubPrivate Sub Timer1_Timer() Text3.Text = Text3.Text + 1 If Text3.Text = 100 Then Text3.Text = 0: Text2.Text = Text2.Text + 1 If Text2.Text = 60 Then Text2.Text = 0: Text1.Text = Text1.Text + 1 End Sub
一个timer不行 就用两个
To: butterfly_79(西伯利亚蝴蝶) 哇噻,这么长时间了,你还没搞定呀 给你提示两点: 1. 整型的范围最大到32768,所以如果你要用到大于32768的数, 要用长整型long 2. 时间相减,得到的是天数,所以你的那句 if now()-starttimer>9000 then 要为真的话,要等20多年哟(啊!这么久呀?:-o), 现在,怎么做你知道啦。
private startimer as date '全局变量 Private Sub begin_Click() Timer1.Enabled = True timer1.interval= 1000 '那就改为秒,程序不变 startimer = Now()End Sub Private Sub Timer1_Timer() if DateDiff("n", Now, startimer)>30 then '比较两个时间相差的分 ,“n”代表比较的是分 MsgBox "时间到!!!", vbOKOnly, "阶段测验" Form1.Show Form1.score.Enabled = True Form1.begin.Enabled = False Timer1.Enabled = False Timer1.Interval = 0 end if End Sub
butterfly_79(西伯利亚蝴蝶) : 你还是试试我的第一次回复的程序, 我稍改了一下给你:先设定timer1的interval=0 button1_click() timer1.interval=65000 starttimer=now() end sub...timer1.timer() if now()-starttimer>1200/86400 then '20分钟 msgbox "时间到。",vbinformation end endif end sub
楼主真碰到难作业了还是不理解呢我5分钟作了下面的实验,适合否?'新建工程,加两个窗体,加上下面代码,Run,~~~~ OK!'form1: 放一个 Timer , 一个 commandBox 贴上下面代码 Dim nNmb As Integer Private Sub Form_Load() Timer1.Enabled = False: Timer1.Interval = 100 '100自己定吧 End Sub Private Sub Command1_Click() nNmb = 0: Timer1.Enabled = True: Form1.Visible = False: form2.Show End Sub Private Sub Timer1_Timer() If nNmb > 1 Then Timer1.Enabled = False: form2.offForm Else nNmb = nNmb + 1 '>1 自己定吧 End Sub'form2: 不放控件,贴上下面代码 Sub offForm() MsgBox "时间到!", 64, "!!!!!" Form1.Visible = True: Unload Me End Sub
'如果多处用到,form2可不参与编码,为减少代码,最好定义一个窗体对象变量 'form2 只是存在就行。 'form1: 放一个 Timer 和一个 commandButton 贴上下面代码 Dim nNmb As Integer, pForm As Form Private Sub Form_Load() Timer1.Enabled = False: Timer1.Interval = 1000 '100自己定吧 End Sub Private Sub Command1_Click() nNmb = 0: Timer1.Enabled = True: Form1.Visible = False Set pForm = form2: form2.Show End Sub Private Sub Timer1_Timer() If nNmb > 1 Then Timer1.Enabled = False: offForm Else nNmb = nNmb + 1 '>1 自己定吧 End Sub Sub offForm() MsgBox "时间到!", 64, "!!!!!" Form1.Visible = True: Unload pForm End Sub
button1_click()
timer1.interval=1000
starttimer=now()
end sub...timer1.timer()
if now()-starttimer>设定的时间值 then
msgbox "时间到。",vbinformation
end
endif
end sub
2.这个控件的enable属性起初要设为false
Public Function delay(mins%, secs%, Optional ByRef stopflag) As Long
'延时函数
Dim endofdelay
endofdelay = DateAdd("n", mins, Now)
endofdelay = DateAdd("s", secs, endofdelay)
delay = 0
Do While (Now < endofdelay)
DoEvents
If Not IsMissing(stopflag) Then
If stopflag Then
delay = 1
stopflag = False
Exit Do
End If
End If
Loop
'callbyname()
2.这个控件的enable属性起初要设为true并且interval=你想要的值(1-65535ms)
并且interval=你想要的值(1-65535ms)
注意: 当interval = 0,表示停止,不发送timer事件,相当于关闭定时器;Enabled=true时,打开计时器,false时关闭计时器,不论interval值为多少Enabled属性和Interval属性一起控制定时器.Private Sub Command1_Click()
Timer1.Enabled = True
Timer1.Interval = 20
End SubPrivate Sub Timer1_Timer()
Timer1.Enabled = False
Timer1.Interval = 0
Load Form2
Form2.Show
End Sub
Private Sub Command1_Click()
Timer1.Enabled = True
Timer1.Interval = 1000
starttime = Now()
End SubPrivate Sub Timer1_Timer()
If Now() - starttime > 1000 Then
MsgBox "时间到!", vbInformation
Timer1.Enabled = False
Timer1.Interval = 0
End If
End Sub
时间到时就要timer1.enable=false
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
For i = 0 To 10
startimer = Now()
If Int(Now() - startimer) > 9000 Then
i = i + 1
End If
If i > 10 Then
Exit For
End If
Next i
MsgBox "时间到!!!", vbOKOnly, "阶段测验"
Form1.Show
Form1.score.Enabled = True
Form1.begin.Enabled = False
Timer1.Enabled = False
Timer1.Interval = 0
End Sub
直接用DATEDIFF函数和NOW()函数就行了:
1.在COMMAND_CLICK中得到开始时间,如:STARTTIME=NOW()
2.用DATEDIFF函数得到时间的差值,如:DATEDIFF("N",STARTTIME,NOW())
他返回的是两个时间的差值.
你可以在每次进入其它窗体时进行计算.
返回单位:
H 小时
N 分
S 秒
如果差值为30那么就做你想做的事
你用second(now)取得时间再转换成int
使用以下代码试试:
static TT as IntegerPrivate Sub begin_Click()
Timer1.Interval = 60 * 1000
End SubPrivate Sub Timer1_Timer()
if Timer1.Interval = 0 then exit sub '如果Interval已经为0则什么也不做就退出
TT = TT + 1
if TT > 20 then
TT = 0
Timer1.Interval = 0
MsgBox "时间到!!!", vbOKOnly, "阶段测验"
endif
Form1.Show
Form1.score.Enabled = True
Form1.begin.Enabled = False
End Sub
private startimer as date '全局变量
Private Sub begin_Click()
Timer1.Enabled = True
timer1.interval=60 * 1000
startimer = Now()End Sub
Private Sub Timer1_Timer()
if DateDiff("n", Now, startimer)>30 then '比较两个时间相差的分 MsgBox "时间到!!!", vbOKOnly, "阶段测验"
Form1.Show
Form1.score.Enabled = True
Form1.begin.Enabled = False
Timer1.Enabled = False
Timer1.Interval = 0
end if
End Sub
Timer1.Enabled = Not (Timer1.Enabled)
End SubPrivate Sub Form_Load()
Form1.Text1.Text = 0
Form1.Text2.Text = 0
Form1.Text3.Text = 0
Timer1.Interval = 10
Timer1.Enabled = False
End SubPrivate Sub Timer1_Timer()
Text3.Text = Text3.Text + 1
If Text3.Text = 100 Then Text3.Text = 0: Text2.Text = Text2.Text + 1
If Text2.Text = 60 Then Text2.Text = 0: Text1.Text = Text1.Text + 1
End Sub
就用两个
给你提示两点:
1. 整型的范围最大到32768,所以如果你要用到大于32768的数, 要用长整型long
2. 时间相减,得到的是天数,所以你的那句 if now()-starttimer>9000 then 要为真的话,要等20多年哟(啊!这么久呀?:-o), 现在,怎么做你知道啦。
Private Sub begin_Click()
Timer1.Enabled = True
timer1.interval= 1000 '那就改为秒,程序不变
startimer = Now()End Sub
Private Sub Timer1_Timer()
if DateDiff("n", Now, startimer)>30 then '比较两个时间相差的分 ,“n”代表比较的是分 MsgBox "时间到!!!", vbOKOnly, "阶段测验"
Form1.Show
Form1.score.Enabled = True
Form1.begin.Enabled = False
Timer1.Enabled = False
Timer1.Interval = 0
end if
End Sub
你还是试试我的第一次回复的程序,
我稍改了一下给你:先设定timer1的interval=0
button1_click()
timer1.interval=65000
starttimer=now()
end sub...timer1.timer()
if now()-starttimer>1200/86400 then '20分钟
msgbox "时间到。",vbinformation
end
endif
end sub
Dim nNmb As Integer
Private Sub Form_Load()
Timer1.Enabled = False: Timer1.Interval = 100 '100自己定吧
End Sub
Private Sub Command1_Click()
nNmb = 0: Timer1.Enabled = True: Form1.Visible = False: form2.Show
End Sub
Private Sub Timer1_Timer()
If nNmb > 1 Then Timer1.Enabled = False: form2.offForm Else nNmb = nNmb + 1 '>1 自己定吧
End Sub'form2: 不放控件,贴上下面代码
Sub offForm()
MsgBox "时间到!", 64, "!!!!!"
Form1.Visible = True: Unload Me
End Sub
'form2 只是存在就行。
'form1: 放一个 Timer 和一个 commandButton 贴上下面代码
Dim nNmb As Integer, pForm As Form
Private Sub Form_Load()
Timer1.Enabled = False: Timer1.Interval = 1000 '100自己定吧
End Sub
Private Sub Command1_Click()
nNmb = 0: Timer1.Enabled = True: Form1.Visible = False
Set pForm = form2: form2.Show
End Sub
Private Sub Timer1_Timer()
If nNmb > 1 Then Timer1.Enabled = False: offForm Else nNmb = nNmb + 1 '>1 自己定吧
End Sub
Sub offForm()
MsgBox "时间到!", 64, "!!!!!"
Form1.Visible = True: Unload pForm
End Sub