Private Sub Timer1_Timer()
Form1.Text1.Text = Form4.Text1.Text
End Sub上面的代码,如果Form1先启动,而Form4未启动。Form1.Text1.Text仍然显示Form4.Text1.Text的值,本来应该为空的,谁知道这是为什么?(主要目的,想让Form1判断Form4的运行状态,如果Form4运行到某一步骤,Then Form1执行相应的语句)

解决方案 »

  1.   

    Form1.Text1.Text = Form4.Text1.Text,
    执行这句时,尽管form4未启动,也会被加载到内存,仅是为显示而已
    判断form4.visible为true/false 即可
      

  2.   

    Form1.Text1.Text = Form4.Text1.Text调用了Form4,Form4就已加载,只是visible属性为false
    ,试一试:
    Private Sub Timer1_Timer()
    Set Form4 = Nothing
    Form1.Text1.Text = Form4.Text1.Text
    For Each f In Forms
    Debug.Print f.Caption
    Next
    End Sub
      

  3.   

    在form1或模块里定义一个全局布尔型变量:ok
    (定义在form1里使用时用Form1.ok,模块里直接写ok.建议用模块)form4中你的"某一步骤"后面加上
    ok=true然后
    form1中
    Private Sub Timer1_Timer() 
    if ok
    Form1.Text1.Text = Form4.Text1.Text 
    ok=false
    end if
    End Sub 
      

  4.   

    Form1.Text1.Text = Form4.Text1.Text 
    执行以一句:
    如果form4已经加载(无论显示与否)则返回form4.text1.text的值
    如果form4未经加载,则先加载form4(不显示),然后返回form4.text1.text的值(主要目的,想让Form1判断Form4的运行状态,如果Form4运行到某一步骤,Then Form1执行相应的语句) 
     
    哪就让form4(可隐藏form4.hide)一直运行着吧,根据form4.text1.text里的值的变化判断运行到哪一步了。
      

  5.   

    哈哈,解决了。
    不仅有原理,还有源码。不胜感激,受益匪浅。
    真是初学者的天堂,
    thank you everyone