我定义了个Text,只能输入小于65535的数,大于65535的改为什么啊?
If Dir("15.txt") <> "" Then
Dim Temp15 As String
Open App.Path & "\15.txt" For Input As #15
Line Input #15, Temp15
Text12.Text = Temp15
Close #15
End If
If Dir("15.txt") <> "" Then
Dim Temp15 As String
Open App.Path & "\15.txt" For Input As #15
Line Input #15, Temp15
Text12.Text = Temp15
Close #15
End If
解决方案 »
- VB里STRING数组中元素的引用问题
- 能不能让程序在运行时修改资源文件中的内容
- list 控件的水平滚动条怎么显示?
- SQL中的某个字段为NULL,当在VB中用文本框显示时出错,请问高手如何解决?
- 怎样运用存储过程在VB中向 SQL SERVER 插入数据?
- 各位高手你们好!我想写一个定时读数据库的程序遇到下面的问题请指点:代码如下:20分
- 如何发出反馈消息?
- 关于VB的打印问题
- 急!!!data evironment设置和分页打印问题ーーー100分
- 各位大师兄谁会用 VB编个发送Email程序小弟 正为之发愁 年都过不好
- 使用ADO对象向数据库添加数据
- 大家测试一个有趣的现象,double型反而没有single型精确???
If Dir("15.txt") <> "" Then
Dim Temp15 As String
Open App.Path & "\15.txt" For Input As #15
Line Input #15, Temp15
Text12.Text = Temp15
Close #15
End If下面这几句是读入,差不多
If Dir("15.txt") <> "" Then
Dim Temp15 As String
Open App.Path & "\15.txt" For Input As #15
Line Input #15, Temp15
Close #15
End If
Timer3.Interval = Temp15 * 1000 '运用Temp15,即Text12的值。
Option ExplicitPrivate TimerCount As Long '计数变量Private Sub Command1_Click()
'测试用例
TimerCount = 120 '计时2分钟
Timer1.Enabled = True '开始计时
End SubPrivate Sub Form_Load()
Timer1.Enabled = False '初始状态下禁用timer
Timer1.Interval = 1000 '每1秒计数一次
End SubPrivate Sub Timer1_Timer()
TimerCount = TimerCount - 1 '每秒计数变量-1
Debug.Print "还剩" & TimerCount & "秒"
If TimerCount <= 0 Then
MsgBox "时间到了"
Timer1.Enabled = False '停止计时
End If
End Sub
想timer控件大于65秒后去执行你的任务可向下面这样做:
Option Explicit
Dim dtNextTime As Date
Const N As Integer = 5 '五分钟执行一次任务(自己改值)Private Sub Form_Load()
Timer1.Interval = 500 '............半秒一查定时器
dtNextTime = DateAdd("n", N, Now) '当前时间加N分钟后执行第一次任务
'"n"改成"s"可以N秒后执行一次任务
'"n"改成"d"可以N天后执行一次任务
End SubPrivate Sub Timer1_Timer()
'根据dtNextTime值(N分钟触发一次定时器1的发送任务)
If Now >= dtNextTime Then
Timer1.Enabled = False
Debug.Print "时间到了,我执行任务" '你的命令在这
dtNextTime = DateAdd("n", N, Now)
Timer1.Enabled = True
End If
End Sub
Private lngMod As LongPrivate Sub Command1_Click()
If Val(Text1) > 65535 Then
lngNum = Val(Text1) \ 60000
lngMod = Val(Text1) Mod 60000
Timer1.Interval = 60000
Timer1.Tag = "1"
Else
Timer1.Interval = Val(Text1)
Timer1.Tag = "0"
End If
Timer1.Enabled = True
End SubPrivate Sub Form_Load()
Timer1.Enabled = False
lngNum = 0
lngMod = 0
End SubPrivate Sub Timer1_Timer()
Static lngRun As Long
lngRun = lngRun + 1
If lngRun = lngNum Or lngNum = 0 Then
If lngMod > 0 Then
Timer1.Interval = lngMod
lngMod = 0
Else
lngRun = 0
Call Command1_Click
'……你要在timer中运行的代码
End If
End If
End Sub
Private lngMod As LongPrivate Sub Command1_Click()
Timer1.Enabled = True
If Val(Text1) > 65535 Then
lngNum = Val(Text1) \ 60000
lngMod = Val(Text1) Mod 60000
Timer1.Interval = 60000
Else
Timer1.Interval = Val(Text1)
End If
Timer1.Enabled = True
End SubPrivate Sub Form_Load()
Timer1.Enabled = False
lngNum = 0
lngMod = 0
End SubPrivate Sub Timer1_Timer()
Static lngRun As Long
lngRun = lngRun + 1
If lngRun = lngNum Or lngNum = 0 Then
If lngMod > 0 Then
Timer1.Interval = lngMod
lngMod = 0
Else
lngRun = 0
Call Command1_Click
'……你要在timer中运行的代码
End If
End If
End Sub
If Val(Text1) > 65535 Then
lngNum = Val(Text1) \ 60000
lngMod = Val(Text1) Mod 60000
Timer1.Interval = 60000
Else
Timer1.Interval = Val(Text1)
End If
这句我觉得有点问题 大于65535的数是不会再报错了 但是只是执行了Timer1.Interval = 60000,比如120s,也就执行60s就结束了,没有真正到120s。
有一点必须告诉楼主,Timer的时间间隔最大是65535ms,也就是65.5秒左右,你的Timer3.Interval = Temp15 * 1000 这句代码可能会带来错误
timer 最大不可能超过65535,就要求你变换思路
Private Sub Form_Load()
Timer1.Enabled = False '初始状态下禁用timer
Timer1.Interval = 1000 '每1秒计数一次
End Sub这样我的Label控件显示状态会一秒开、一秒关,我是想在Timer1.Interval 大于65535ms期间 显示状态一直是开 到了时间 显示关
再 60s触发一次,触发5次,然后按6750触发一次,执行一次程序
Timer1.Enabled = True
修改为Private Sub Command1_Click()
Timer1.Enabled = false
这个问题好办,大致代码如下:
Option Explicit
Dim lngStartTime As Long
Dim lngLen As Long
Private Declare Function GetTickCount Lib "kernel32" () As LongPrivate Sub Command1_Click()
lngLen = Val(Text1.Text) '取得间隔毫秒数
lngStartTime = GetTickCount
End SubPrivate Sub Form_Load()
Timer1.Enabled = True
Timer1.Interval = 20
End Sub
Private Sub Timer1_Timer()
If GetTickCount - lngStartTime >= lngLen Then
lngStartTime = GetTickCount '记录新的起点
'以下添加你的代码
End If
End Sub
不理解你的意思,是说你想要用比较大的时间间隔反复的开关一个label的visible?
同时我正在看jhone99和巫师的怎么样!谢谢您们几位热心解答!
text里输入时间值,比如想输入0-300s之间的任何个数值,即0-300000ms或者更大的值,在输入的某个时间值VB往下位机发送数据,到了时间就停止发送。
chewinggum兄的“Timer1.Interval = 1000”我觉得有点问题,这样我就只执行1000ms,根本不运行“TimerCount = 120 '计时2分钟"Option ExplicitPrivate TimerCount As Long '计数变量Private Sub Command1_Click()
'测试用例
TimerCount = 120 '计时2分钟
Timer1.Enabled = True '开始计时
End SubPrivate Sub Form_Load()
Timer1.Enabled = False '初始状态下禁用timer
Timer1.Interval = 1000 '每1秒计数一次
End SubPrivate Sub Timer1_Timer()
TimerCount = TimerCount - 1 '每秒计数变量-1
Debug.Print "还剩" & TimerCount & "秒"
If TimerCount <= 0 Then
MsgBox "时间到了"
Timer1.Enabled = False '停止计时
End If
End Sub在看jhone99和巫师的怎么样
Option Explicit
Dim lngStartTime As Long
Dim lngLen As Long
Private Declare Function GetTickCount Lib "kernel32" () As LongPrivate Sub Command1_Click()
lngLen = Val(Text1.Text) '取得间隔毫秒数
lngStartTime = GetTickCount
End SubPrivate Sub Form_Load()
Timer1.Enabled = false
Timer1.Interval = 20
End Sub
Private Sub Timer1_Timer()
If GetTickCount - lngStartTime >= lngLen Then
lngStartTime = GetTickCount '记录新的起点
'以下添加你的代码
End If
End Sub
也是time1一直运行 不起作用
Private lngNum As Long
Private lngMod As LongPrivate Sub Command1_Click()
Timer1.Enabled = False
If Val(Text1) > 65535 Then
lngNum = Val(Text1) \ 60000
lngMod = Val(Text1) Mod 60000
Timer1.Interval = 60000
Else
Timer1.Interval = Val(Text1)
End If
Timer1.Enabled = True
End SubPrivate Sub Form_Load()
Timer1.Enabled = False
lngNum = 0
lngMod = 0
End SubPrivate Sub Timer1_Timer()
Static lngRun As Long
lngRun = lngRun + 1
If lngRun = lngNum Or lngNum = 0 Then
If lngMod > 0 Then
Timer1.Interval = lngMod
lngMod = 0
Else
'lngRun = 0
'Call Command1_Click
Timer1.Enabled = False'只是触发一次加这个 '……你要在timer中运行的代码
End If
End If
End Sub
Private Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As LongPrivate Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As LongPrivate Sub TimerProc(ByVal lHwnd As Long, ByVal lMsg As Long, ByVal lTimerId As Long, ByVal lTime As Long)Dim lResult As Long
lResult = StopTimer(lTimerId)
Call InsertYourProcessNameHere
'code to be executed after interval
End SubPublic Sub StartTimer(lInterval As Long) 'convert interval to milliseconds prior to passing
lTimerId = SetTimer(0, 0, lInterval, AddressOf TimerProc)
End SubPublic Function StopTimer(lTimerId As Long) As Long
'must pass the TimerId returned by SetTimer
StopTimer = KillTimer(0, lTimerId)
End Function'调用方式
Call StartTimer(Val(Text1))
一劳永逸
有空你可以理解一下我在timer事件里面
TimerCount = TimerCount - 1 的作用以及If TimerCount <= 0 判断的意图。
没空的话就算了。
m_CountDown = CLng(Text1)
Label1.Caption = TimeSerial(0, 0, m_CountDown)
Label1.BackColor = vbGreen
Timer1.Enabled = True
End SubPrivate Sub Form_Load()
Timer1.Enabled = False
Timer1.Interval = 1000
End SubPrivate Sub Timer1_Timer()
m_CountDown = m_CountDown - 1
Label1.Caption = TimeSerial(0, 0, m_CountDown)
If m_CountDown <= 0 Then
Label1.BackColor = vbRed
Timer1.Enabled = False
End If
End Sub
Timer是一直在运行,但是里面有一个判断语句啊,你把你的代码添加到判断语句里面,我给你指出添加代码的地方了。