fieldset{padding:10px;}
Sub time_Counter()' 使用前要初始化 Costtime 和 打开计时器开关 TurnOff_clock' 使用完 要关闭计时器开关'Costtime 计数器'TurnOff_clock 计时开关Dim tempN As IntegerDim lastTimee As String PauseTime = 1 ' 设置暂停时间。 While TurnOff_clock <> 0 Start = Timer '---------------------------------晶振 Do While Timer < Start + PauseTime DoEvents ' 将控制让给其他程序。 Loop '---------------------------------晶振 '---------------------------------表盘 Costtime = Costtime + 1 If Costtime >= 60 Then Timee = Costtime \ 60 & ":" & Format(Costtime Mod 60, "00") Else Timee = "0:" & Format(Costtime, "00") End If formain.Labpast.Caption = "已运行:" & Timee 'timee 为计时输出变量 formain1.Label3.Caption = "已运行:" & Timee 'timee 为计时输出变量 '-------------------------计算剩余时间 tempN = (Costtime / (formain.gloProgressBar.Value + 1)) * 100 If tempN >= 60 Then lastTimee = tempN \ 60 & ":" & Format(tempN Mod 60, "00") Else lastTimee = "0:" & Format(tempN, "00") End If formain.Lablast.Caption = "估计剩余:" & lastTimee WendEnd Sub
如何实现对程序运行计时呢??? 是vba 没有timer控件 只有timer函数算是并行的程序设计虽然相互之间不用交互只有触发和终止的关系,VB中如何并行程序设计呢——解决方案——————————————————–事实上并需要timer你所谓的主程序应该是就是应该就是过程或者函数,运行时间很长,意味着,你的函数体里有循环次数很多的循环,你只要在循环体里面加入,以下代码假设你的循环为for循环for……….progressbar1.value=progressbar1.value+delta’进度增加值,假设使用进度条显示进度doeventsnext就能得到需要的效果——解决方案——————————————————–这和单步的运行时间有什么关系?计时部分先记下开始时间;然后每次更新进度时再取一下当前时间,就可以计算经过时间了、结合进度比率可以计算剩余时间。这不就全了!——解决方案——————————————————–用timer控件就可以实现了假设你的循环for Text1.text = now..next每次循环时间都不固定timer控件里头可以可以根据Text1.text的变化, 来递增时间, 下面是个例子text1,command1,text2,timer1text1是你的循环里头的那个时间command1是你的循环不固定时间控制text2是你需要不断显示的准确时间Private Sub Command1_Click() Text1.Text = TimeEnd SubPrivate Sub Text1_Change() Text2.Text = Text1.Text Timer1.Interval = 1000End SubPrivate Sub Timer1_Timer() Text2.Text = TimeValue(Text2.Text) + TimeValue("00:00:01")End Sub——解决方案——————————————————–楼主:想要的是标准的多线程了。。。任何其他的类似 Timer 的东西,都无法实现你想要的,它们只能近似模拟出效果而已,无论再怎么做,它们都不是实际意义上的多线程!看了你的要求和回贴,感觉你要的就是纯粹的多线程!VB6 做多线程也还可以,VBA 不知道能不能做了。。。应该是可以吧!总之,两种途径:1、直接调用多线程 WIN32DLL;2、使用 VB 自身的 ACTIVEX DLL 工程;——解决方案——————————————————–把刷新进度的步骤分得更细点,只要每个间隔在0.5秒以下,进度就很平滑了。这是最简单的方案。——解决方案——————————————————–我的方案就是最简单最好的, 都看不到么, 只要你的tiemr开始运行, 就会永远的1秒一次的准确的跳动下去——解决方案——————————————————–VB code
While httpRequester.ReadyState <> 4 在这里刷新时间 DoEventsWend打掉的应是脆弱的铁屑,锻成的将是锋利的钢刀。