请哪位大侠救救我,帮忙解释一下VB做流水灯的程序代码呀~!!急急急~~!!!麻烦详细一点

代码为:Option Explicit
Private I As Integer, J As Integer

Private Sub Form_Load()
I = 0
For J = 0 To 9
Label1(J * 3).ForeColor = &HFF&
Label1(J * 3 + 1).ForeColor = &HFF00&
Label1(J * 3 + 2).ForeColor = &HFFFF&
Next J
End Sub

Private Sub Timer1_Timer()
If I = 30 Then
I = 0
End If
I = I + 1
For J = 0 To 29
Label1(J).Visible = False
Next J
If I Mod 3 = 2 Then
For J = 0 To 9
Label1(J * 3 + 1).Visible = True
Next J
Else
If I Mod 3 = 0 Then
For J = 0 To 9
Label1(J * 3 + 2).Visible = True
Next J
Else
For J = 0 To 9
Label1(J * 3).Visible = True
Next J
End If
End If
End Sub

Private I As Integer, J As Integer

Private Sub Form_Load()
I = 0 这行是初始化,也就是流水的开始状态设定
For J = 0 To 9 共有10组,每组三个灯,用label来表示
Label1(J * 3).ForeColor = &HFF& 设定每组第一灯的颜色
Label1(J * 3 + 1).ForeColor = &HFF00& 设定每组第二灯的颜色
Label1(J * 3 + 2).ForeColor = &HFFFF& 设定每组第三灯的颜色
Next J
End Sub

Private Sub Timer1_Timer() 没到设定的时间
If I = 30 Then 流水号到了结尾,就
I = 0 重新从头开始
End If
I = I + 1 下一个灯
For J = 0 To 29 三十个灯
Label1(J).Visible = False 熄灭(不可见)
Next J
If I Mod 3 = 2 Then 如果流水号到了每组第二灯
For J = 0 To 9
Label1(J * 3 + 1).Visible = True 这些等亮起(可见)
Next J
Else 否则,
If I Mod 3 = 0 Then 如果流水号到了每组第零灯
For J = 0 To 9
Label1(J * 3 + 2).Visible = True 这些等亮起(可见)
Next J
Else 都不是的话
For J = 0 To 9
Label1(J * 3).Visible = True 其余的灯亮起
Next J
End If
End If
End Sub

说明:这个程序很不好。主要表现在:
1、灯的数量和位置,在设计界面已经定死,修改很不方便。应在form_load里面,设定这些。
2、定时更换显示的代码思路不清晰。流水号余2,亮每组第二灯;流水号不余,却亮起第三灯,流水号余1,亮的又是最前面的灯。
3、一些label的课件状态总是反复执行,计算量过大等等。
温馨提示:答案为网友推荐,仅供参考