初学者调试程序时遇到的一个小问题?请教!

dszch 2004-11-02 01:05:18
我按照书上的例子,调试一个计时器的小程序,基本是通了,但是有一点小问题,请高手帮我解决!谢谢了!
程序如下:
Private Sub Command1_Click()
If Command1.Caption = "&S 暂停" Then
Command1.Caption = "&C 继续"
Timer1.Enabled = False


Else
Command1.Caption = "&S 暂停"
If Label1.Caption = "00:00:00:0" Then Form1.Tag = Timer
Timer1.Enabled = True
End If

End Sub


Private Sub Command2_Click()
Form1.Tag = Timer
Label1.Caption = "00:00:00:0"
End Sub


Private Sub Timer1_Timer()
m = Timer - Form1.Tag '调试时说这一句类型不匹配
n0 = (m * 10) Mod 10
m = Int(m)
n1 = Format(m Mod 60, "00.")
n2 = Format((m \ 60) Mod 60, "00:")
n3 = Format(m \ 3600, "00:")
Label1.Caption = n3 & n2 & n1 & n0

End Sub


出现的问题是,一点击开始,出现类型不匹配的提示。
当点击“重置”按钮后,就正常了。
如何解决这个问题?

...全文
94 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
officecn 2004-11-04
  • 打赏
  • 举报
回复
可能你将Form1.Tag赋值给别的变量的时候,Form1.Tag未初始化或者是非数字类型。
xike 2004-11-04
  • 打赏
  • 举报
回复
小吉说的好!

这个程序只需这样即可

Private Sub Command1_Click()
Form1.Tag = Timer '加入这一行
If Command1.Caption = "&S 暂停" Then
Command1.Caption = "&C 继续"
Timer1.Enabled = False


Else
Command1.Caption = "&S 暂停"
If Label1.Caption = "00:00:00:0" Then Form1.Tag = Timer
Timer1.Enabled = True
End If

End Sub

这一行也按照小吉的方法:在Form_load事件中加上一句Form1.Tag = Timer
homezj 2004-11-02
  • 打赏
  • 举报
回复
Form1.Tag可以用,只是你没有对其初始化而已,有很多种方法可避免。例举几个(任一方法都行)
1、设计时将Form1的Tag属性设为0;
2、在Form_load事件中加上一句Form1.Tag = Timer
3、设计时将Timer1的Enable属性设为False;Label1的Caption 设为 "00:00:00:0"
用变量代替,也不要用integer类型,而是Single,它会让你秒后的那级时间(十分之一秒)出现误差的。
还有Timer1_Timer中的几个变量,最好加上声明,初学编程,不养成声明变量的习惯,以后。你会后悔不已的。
dszch 2004-11-02
  • 打赏
  • 举报
回复
我试试!谢谢
51365133 2004-11-02
  • 打赏
  • 举报
回复
Form1.Tag 把它删除了,在定义一个变量,来保存时间
在后边的m = Timer - Form1.Tag 里边也换成你定义的变量就可以了
定义成integer也行

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧