Private Sub Command1_Click()
  n = Val(Text1.Text)
  If (n > 25 Or n < 5) Then
    MsgBox "n值,5到25之间", vbOKOnly, "信息提示"
    Exit Sub
  End If
  ReDim a(n) As Integer
  Randomize
  For i = 0 To n - 1
    a(i) = Int(Rnd * 20)
  Next i
  s = ""
  m = a(0)
  For i = 0 To n - 1
    If (m < a(i)) Then m = a(i)
    s = s + Str(a(i))
  Next i
  Label2.Caption = "选取的数序:" + s
  Label3.Caption = "最大数:" + Str(m)
End Sub请问以上程序如果再加上
private sub form_load()
  dim a() as integer
end sub
后,和不加前有什么区别吗?

解决方案 »

  1.   

    没区别。
    因为
    private sub form_load()
      dim a() as integer
    end sub
    声明的是一个局部变量。这个过程完了,就没了。你的程序中a真正的声明在这里
      ReDim a(n) As Integer一般来说,这样声明比较规范:
     Dim a() As Integer   '放在过程中靠前的地方,如果是全局变量,就放在mdl中或者form的最上面
     。
     要用的时候:
     redim a(n)           '申明大小。  全局变量就放在form_load 或class_init..那里
    。使用  。。
     erase a()            '释放空间。  全局变量就放在form_unload或者class_term..那里不需要Dim a() As Integer也可以通过编译,但是那样不好。
      

  2.   

    Summer006(在CSDN打肿脸充胖子) 说得对,那是过程级声明,在对其他其他过程没有意义,加和不加都一样,之所以没有提示错误,因为你没有让程序强制显式声明变量,那样,你所用到的变量,如果没有定义,那么系统会自动会去定义,ReDim a(n) As Integer并不是对数组的定义如果你在通用段里写:Option Explicit ,对变量进行显式声明,那么你一旦使用没有定义的变量,那么就会有错误提示为了减少程序的出错率,建议进行显式声明变脸