vb的timer控件是不断循环吗?为什么这段代码和我想象的不一样。。

private sub timer1_timere()
dim a
a=10
a=a-1
end sub
为什么为此执行a不是10,9,8,7.。。。。这样。?

Timer1每次循环的时候,你这段代码都会重复运行,也就是说:

第1次循环:a=10 a=a-1=10-1=9

第2次循环:a=10 a=a-1=10-1=9

第3次循环:a=10 a=a-1=10-1=9

......

第n次循环:a=10 a=a-1=10-1=9

也就是说,不管运行多少次,a的值都是9。

要想实现你的目的,必须把变量a设为全局变量或静态变量,这样每次循环时才不会被重新初始化:


静态变量的例子:

Private Sub Timer1_Timer()
Static a   '把a声明为静态变量
If IsEmpty(a) Then
    a = 10
Else
    a = a - 1
End If
End Sub


全局变量的例子:

Dim a   '把a声明为全局变量

Private Sub Timer1_Timer()
If IsEmpty(a) Then
    a = 10
Else
    a = a - 1
End If
End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-20

确实是每次循环。

Dim a
a = 10
a = a - 1

每次都循环如上三行代码。

第一行定义一个变量 a。

第二行给 a 赋值为 10。

第三行 a 的值变为 a - 1,也就是 9。

所以 a 始终等于 9。

 

如果想达到你想要的10、9、8……,应该是:

Dim a
a = 10  
Private Sub Timer1_Timer()
   a = a - 1
End Sub

第2个回答  2013-10-20
你应该补一下知识:
变量的作用域以及变量的生命周期。
第3个回答  2013-10-20
变量a的定义与初始化放在timer1_timere()函数外。
相似回答