定义了全局变量i,j,还有个timer控件等
在Private Sub choose_Click()过程中利用i,j当控件数组的下标(都从1开始),用的排序,所以i和j的值是随时变化的.Private Sub choose_Click()
......
Call Timer1
.........
End sub在Timer1过程中如下
Private Sub Timer1_Timer()
Call jiaohuan'自定义的一个过程
End Sub在Sub jiaohuan()中引用i和j,报错说"找不到下标为0的控件"
我i和j都是从1开始,当然找不到,证明i和j的值根本不是Sub choose_Click()中i和j的值,请问如果才能叫Sub jiaohuan()中i和j的值随时都和Sub choose_Click()中i和j的值保持同步?
在Private Sub choose_Click()过程中利用i,j当控件数组的下标(都从1开始),用的排序,所以i和j的值是随时变化的.Private Sub choose_Click()
......
Call Timer1
.........
End sub在Timer1过程中如下
Private Sub Timer1_Timer()
Call jiaohuan'自定义的一个过程
End Sub在Sub jiaohuan()中引用i和j,报错说"找不到下标为0的控件"
我i和j都是从1开始,当然找不到,证明i和j的值根本不是Sub choose_Click()中i和j的值,请问如果才能叫Sub jiaohuan()中i和j的值随时都和Sub choose_Click()中i和j的值保持同步?
免费的学习交流网站,欢迎大家访问!
http://www.j2soft.cn/
Dim time As Integer, sum As Integer
Dim i As Integer, j As Integer, k As Integer, temp As String, add As IntegerPrivate Sub display(arr) '显示随机数
For i = 1 To 10
arr(i).Caption = Int(Rnd() * 100 + Rnd() * 10)'第一组,数不变
lab(i).Caption = Int(Rnd() * 100 + Rnd() * 10)'第二组,每次排序的结果放到这里
Next i
End Sub
Private Sub choose_Click()
sum = 0
Form1.Cls
Call display
For i = 1 To 10 - 1
time = 0
For j = i + 1 To 10
If Val(lab(j).Caption) < Val(lab(i).Caption) Then '判断是否需要交换数据
a.Visible = True '用于演示交换的一个标签
b.Visible = True '另一个
a.Left = arr(i).Left
b.Left = arr(j).Left
a.Top = arr(i).Top
b.Top = arr(j).Top
Call Timer1
'交换
temp = lab(i).Caption: lab(i).Caption = lab(j).Caption: lab(j).Caption = lab(i).Caption
time = time + 1 'time为每趟循环的交换次数
End If
Next j
Print "第"; i; "次循环排序 ";
For k = 1 To 10
Print lab(k).Caption;
Next k
Print " 数据交换了"; time; "次" '输出交换次数
sum = sum + time 'sum为总的交换次数
Next i
Print "------------------------------------------------------------------------------------------"
Print "利用选择排序法(从小到大)排序后的数据为:"
For i = 1 To 10
Print lab(i).Caption;
Next i
Print
Print "数据总共交换了"; sum; "次"
End Sub
Private Sub Timer1_Timer()
Call jiaohuan
End SubSub jiaohuan()'问题在这,这里的i和j的值是0,根本不是choose()中的i和j的值,请问怎么修改?
For add = a.Top To a.Top + a.Height Step -1
If a.Top > a.Top - a.Height Then a.Top = a.Top - 1
If b.Top > b.Top - b.Height Then b.Top = b.Top - 1
Next
For add = 1 To lab(j).Left - lab(i).Left
If a.Left < lab(j).Left Then a.Left = a.Left + 1
If b.Left > lab(i).Left Then b.Left = b.Left - 1
Next
For cc = a.Top = a.Top To a.Top - a.Height
a.Top = a.Top + 1
b.Top = b.Top + 1
NextEnd Sub
和
Private Sub Timer1_Timer()
Call jiaohuan
End Sub
根本是两回事应该写成
Private Sub Timer1()
Call jiaohuan
End Sub