注册 登录
编程论坛 VB6论坛

求大神给解释一下module模块中的变量不能调用

Aterter 发布于 2017-03-04 18:53, 963 次点击
以下是主程序
Private Sub Command5_Click()
Dim i, k, z1, x1, y1 As Integer


For i = 0 To 567
Label1(i).Width = 200
Label1(i).Height = 600
Next i
z1 = 0
    For i = 1 To maxcols
    x1 = 400 + i * 800
    y1 = 8000 - startcount(i) * 300
    For k = 1 To maxcount(i)
   
        Label1(z1).Left = x1 + ((k - 1) Mod 4) * 200
        Label1(z1).Top = y1 - ((k - 1) \ 4) * 600
        Label1(z1).BackColor = RGB(0, 255, 0) '绿色
        Label1(z1).Caption = ""
        z1 = z1 + 1
   Next k
Next i
End Sub

以下是module中的程序

Public maxcount(1 To 12) As Integer
Public startcount(1 To 12) As Integer
Public maxcols As Integer



Option Explicit




Sub main()



maxcount(1) = 40
maxcount(2) = 44
maxcount(3) = 48
maxcount(4) = 52
maxcount(5) = 48
maxcount(6) = 52
maxcount(7) = 52
maxcount(8) = 48
maxcount(9) = 52
maxcount(10) = 48
maxcount(11) = 44
maxcount(12) = 40
startcount(1) = 3
startcount(2) = 2
startcount(3) = 1
startcount(4) = 0
startcount(5) = 1
startcount(6) = 0
startcount(7) = 0
startcount(8) = 1
startcount(9) = 0
startcount(10) = 1
startcount(11) = 2
startcount(12) = 3
maxcols = 12

End Sub

运行后,只进行了第一个for循环,后面的都没结果,帮忙看看问题在哪里
2 回复
#2
Artless2017-03-04 23:49
Private Sub Command5_Click()
Dim i, k, z1, x1, y1 As Integer

call main
For i = 0 To 567
Label1(i).Width = 200
Label1(i).Height = 600
Next i
z1 = 0
    For i = 1 To maxcols
    x1 = 400 + i * 800
    y1 = 8000 - startcount(i) * 300
    For k = 1 To maxcount(i)
   
        Label1(z1).Left = x1 + ((k - 1) Mod 4) * 200
        Label1(z1).Top = y1 - ((k - 1) \ 4) * 600
        Label1(z1).BackColor = RGB(0, 255, 0) '绿色
        Label1(z1).Caption = ""
        z1 = z1 + 1
   Next k
Next i
End Sub
#3
ZHRXJR2017-03-05 12:25
几个问题
1、你的Label1(z1)控件是提前放好在窗体中吗,最多好像有近156个控件,如果提前没有放好,需要动态添加控件的。
2、二层循环,第一次最少40-52次,第三次0-3次,那么最多控件数是156个,那你的For i = 0 To 567 这个循环有点不理解。
3、虽然你在模块中定义了程序级数组与变量,但你的赋值是在模块的 main 过程中,因此必须在 Command5_Click 事件中调用赋值过程:Call main 。

[此贴子已经被作者于2017-3-5 12:26编辑过]

1