可以,下面是把数组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
'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
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
我详细点吧,真是晕呀: 先新建一个普通工程,默认只有一个窗体,点击:工程→添加窗体,会弹出对话框,点击“打开”按钮,会生成一个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
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
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
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
只是第2个窗体的sq数组只是窗体级变量,只在第2个窗体内有效要想在窗体间传递变量,就只有使用模块了
先新建一个普通工程,默认只有一个窗体,点击:工程→添加窗体,会弹出对话框,点击“打开”按钮,会生成一个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