当前位置:编程学习 > VB >>

请高人指点一下我的小程序-计数程序(以分钟为单位显示运行时间)

--------------------编程问答-------------------- 你问的是变量的生存吧...

在sub,function里面定义的,都是局部变量,仅仅在sub,function里面有意义.
比如
Public Sub Form_Load()里么三个变量:

Dim A As Date
Dim TimeB As Date
Dim Counter As Integer
都是局部变量,出来end sub就没有意义来,就是变量未定义...


这样你就明白,在Private Sub Timer1_Timer()里么,你得TimeA是个没有定义的变量,系统默认是variant类型,变量值是0,"",null...这些东西,具体值按变量子类型来...

上面说的是局部变量.有局部就有非局部来.哈哈
比如,在窗体,类里面,在过程外边(都是放在代码的最上面来)定义的变量,就是模块级别的.
dim a 
sub abc()
end sub
这里a就是模块级别的变量,在这个模块里么,都可以访问a的,但是模块外的过程是不能访问a的

在模块里么定义的public类型变量,就是超越来模块变量来,在模块外可以访问.比如全局模块里么的public变量时工程的全局变量,任何地方都可以访问.比如窗体里么的public变量,可以用 窗体名.变量名 的方式访问 --------------------编程问答--------------------     你好,那个为什么timeA 的值在执行datediff()函数时候为0了?这是因为你定义的TextA为过程级别的变量,这个过程执行完,它的值就会初始化为0,  解决方法:你可以把它声明为窗体级变量,就不为0了。
      你写的工程也可以实现,不过,有些多余,textB 没必要写,可以写成Date(),会省很多代码量,程序执行快!!!
     希望对你有帮助!!!!!! --------------------编程问答-------------------- 因为你的TimeA是过程内局部变量,每次都是空。 --------------------编程问答-------------------- 改成这样:

Option Explicit
Dim TimeA As String
Dim A As Date
Dim TimeB As Date
Dim Counter As Integer
Private Sub Form_Load()
    
    
    TimeA = Time()
    Text1.Text = TimeA
    Timer1.Interval = 1000

End Sub

Private Sub Timer1_Timer()
    TimeB = Time()
    Text2.Text = TimeB
    TimeA = Text1.Text
    Counter = DateDiff("n", TimeA, TimeB)
    Text3.Text = Str(Counter)
End Sub

--------------------编程问答-------------------- 各位好,根据上面达人的意见,我改成下面语句是不是更好了。


Option Explicit
Dim TimeA As String
'Dim TimeB As String
Dim A As Date
Dim Counter As Integer
Private Sub Form_Load()
        
    TimeA = Time()
    Text1.Text = TimeA
    Timer1.Interval = 1000

End Sub

Private Sub Timer1_Timer()
    'TimeB = Time()
    Text2.Text = Time()
    'TimeA = Text1.Text    Counter = DateDiff("n", TimeA, Time)
    Text3.Text = Str(Counter)
End Sub
--------------------编程问答-------------------- 可以的。。。
--------------------编程问答--------------------
引用 6 楼 veron_04 的回复:
可以的。。。


谢谢了。
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,