若有两个窗体,要想在其中传递一个二维数组(U(201,80)),请问怎样传递?
VB中数组不能用PUBLIC定义为全局变量吗?

解决方案 »

  1.   

    可以,下面是把数组m(2,2)从窗体1传到窗体2:模块:
    Public m(2, 2) As Long窗体1:
    Private Sub Command1_Click()
        Dim newfrm As New Form2
        newfrm.Show
    End SubPrivate Sub Form_Load()
    Dim i As Long, j As Long
    For i = 0 To 2
       For j = 0 To 2
          m(i, j) = i * j + 1
       Next
     Next
    End Sub窗体2
    Private Sub Form_Load()
        Dim i As Long, j As Long
        For i = 0 To 2
           For j = 0 To 2
              Debug.Print m(i, j)
           Next
         Next
    End Sub
      

  2.   

    to:rainstormmaster(rainstormmaster) 不行啊,VB提示:编译错误:常数,固定长度字符串,数组,用户定义类型,以及Declare语句不充许作为对象模块的Public成员。
      

  3.   

    'Public sq(1600)
    Dim u(202, 3), sv(202, 80)
    Private Sub cmdcread_Click()
    Open "g:\sngdn\sngdn_1.dat" For Output As #1
    dx = 14 / 200
    dt = dx / Sqr(2)
    dts = (dt / dx) ^ 2
    q = 1
    t = 0
    nint = txttmax.Text
    'If nint > 80 Then
     '  ReDim Preserve sv(202, nint)
    'End If
    xx = -7
    For i = 0 To 201
        u(i, 1) = 4 * Atn(Exp(3 - Abs(xx)))
        xx = xx + dx
    Next
    t = t + dt
    For m = 2 To 200
        a2 = u(m + 1, 1) + u(m - 1, 1)
        u(m, 2) = 0.5 * (0.5 * a2 - dt * dt * Sin(0.25 * a2))
    Next
    u(1, 2) = u(2, 2)
    u(201, 2) = u(200, 2)
    'a = 1
    For k = 1 To nint
        For m = 2 To 200
            a1 = u(m + 1, 2) + u(m - 1, 2)
            u(m, 3) = -u(m, 1) + dts * a1 - dt * dt * Sin(0.25 * a1)
        Next
        u(1, 3) = u(2, 3)
        u(201, 3) = u(200, 3)
        For m = 1 To 201
            u(m, 1) = u(m, 2)
            u(m, 2) = u(m, 3)
            sv(m, k) = Sin(u(m, 3) / 2)
            'sq(a) = sv(m, k)
            'a = a + 1
            Write #1, sv(m, k)
            q = q + 1
        Next
        t = t + dt
    Next
    Close #1
     flag = MsgBox("生成" + Str(q) + "个数据", 0, "状态")
    End SubPrivate Sub cmddraw_Click()colo = 18 * Rnd
    For i = 0 To 3
        picshow(i).Line (picshow(i).ScaleLeft, 0)-(picshow(i).ScaleLeft + picshow(i).ScaleWidth, 0)
        picshow(i).Line (0, picshow(i).ScaleTop + picshow(i).ScaleHeight)-(0, picshow(i).ScaleTop)
        For j = 1 To 201 Step 0.01
            picshow(i).PSet ((j - 1), 50 * sv((j - 1), txtt(i).Text)), QBColor(colo)
            
        Next
        labt(i).Caption = "t=" + txtt(i).Text
    Next
    End SubPrivate Sub cmdend_Click()
    End
    End SubPrivate Sub Command1_Click()
    For i = 0 To 3
        picshow(i).Cls
        labt(i).Caption = ""
    Next
    End SubPrivate Sub Command2_Click()End Sub
      

  4.   


    Private Sub cmdreturn_Click()
    Unload Me
    End SubPrivate Sub Form_Activate()
    picrun.Line (picrun.ScaleLeft, 0)-(picrun.ScaleLeft + picrun.ScaleWidth, 0)
    picrun.Line (0, picrun.ScaleTop + picrun.ScaleHeight)-(0, picrun.ScaleTop)
    End SubPrivate Sub Timer1_Timer()
    'b = 1For j = 1 To 201 Step 1
            picrun.PSet ((j - 1), 50 * sq(b)), QBColor(colo)
            b = b + 1
        Next
    End Sub
      

  5.   

    想定义全局变量必须使用模块,在模块中定义你的'Public sq(1600)
    只是第2个窗体的sq数组只是窗体级变量,只在第2个窗体内有效要想在窗体间传递变量,就只有使用模块了
      

  6.   

    就在标准模块中“Public ……”就行了
      

  7.   

    我详细点吧,真是晕呀:
    先新建一个普通工程,默认只有一个窗体,点击:工程→添加窗体,会弹出对话框,点击“打开”按钮,会生成一个form2
    然后,点击工程→添加模块,会弹出对话框,点击“打开”按钮,会生成一个Module1在Module1中键入下面的代码:
    Public m(2, 2) As Long在form1上画一个按钮,然后键入下面的代码:
    Private Sub Command1_Click()
        Dim newfrm As New Form2
        newfrm.Show
    End SubPrivate Sub Form_Load()
    Dim i As Long, j As Long
    For i = 0 To 2
       For j = 0 To 2
          m(i, j) = i * j + 1
       Next
     Next
    End Sub在form2中键入下面的代码:
    Private Sub Form_Load()
        Dim i As Long, j As Long
        For i = 0 To 2
           For j = 0 To 2
              Debug.Print m(i, j)
           Next
         Next
    End Sub