以下代码在VB6中可以,生成EXE文件你试试!
如果有高手看,请指教为什么会这样!
Private Sub Command1_Click()
Dim ax() As Integer
Dim i%
Dim u%
Dim j&
    On Error Resume Next
    u = UBound(ax)
    Label2.Caption = UBound(ax)
    Label3.Caption = u
    For i = 0 To UBound(ax)
        j = j + 1
        Label1.Caption = j
        DoEvents
    Next i
End Sub

解决方案 »

  1.   

    我的测试结果是IDE和EXE都一样,Label1.caption="1":Label2.caption="Label2":Label3.caption="0"
      

  2.   

    数组ax()未初始化,UBound(ax)就产生错误,包含UBound(ax)的语句都不能执行成功,所以Lebel2.Caption没有被赋值;而For语句中由于错误没有正确设置终止条件,而Resume Next使得进入了循环内部,所以会执行一个长循环。
      

  3.   

    因为UBound(ax) 会出错,所以
    u   =   UBound(ax) '这句不会执行,跳到下一句
    Label2.Caption   =   UBound(ax) '也没有执行,继续下一句
    Label3.Caption   =   u '因为u没有被赋值,取其默认值0
    For   i   =   0   To   UBound(ax) '没有执行,继续下一句
    j   =   j   +   1 'j=1
      Label1.Caption   =   j 'label1.caption="1"
    DoEvents 
    Next   i 
    End   Sub 
      

  4.   

    On   Error   goto a
    a: 
    End       Sub   这样没问题
      

  5.   

    既然你已经用变量u获取了UBound(ax)为什么还要多次使用UBound(ax)呢?即使程序运行正常多次调用函数也增加了开销。
    Private   Sub   Command1_Click() 
    Dim   ax()   As   Integer 
    Dim   i% 
    Dim   u% 
    Dim   j& 
            On   Error   goto errhandle 
            u   =   UBound(ax) 
            Label2.Caption   =   u 
            Label3.Caption   =   u 
            For   i   =   0   To   u
                    j   =   j   +   1 
                    Label1.Caption   =   j 
                    DoEvents 
            Next   i 
    exit sub
    errhandle:
      u = 0 
      resume next 
    End   Sub 
      

  6.   

    Private       Sub       Command1_Click()   
    Dim       ax()       As       Integer   
    Dim       i%   
    Dim       u%   
    Dim       j&   
                    On       Error       goto   errhandle   
                    u       =       UBound(ax)   
                    Label2.Caption       =       u   
                    Label3.Caption       =       u   
                    For       i       =       0       To       u 
                                    j       =       j       +       1   
                                    Label1.Caption       =       j   
                                    DoEvents   
                    Next       i   
    exit   sub 
    errhandle: 
        u   =   0   
        resume   next   
    End       Sub   这样会让错误简单点
      

  7.   

    for语句没有执行,所以循环值与变量i无关,是个未知数。