crr(m, 1) = arr(i + brr(j, 1) - 1, 1)下标越界
下面这个程序是:vb6.0上控件VSFlexGrid
1、Form1.VSFlexGrid1.TextMatrix(1, 5)开始的第5列填有数据且每9行为一组,Form1.VSFlexGrid1.TextMatrix(1, 6)开始的第6列填有数据其数值为第5列数据每9行的编号。
2、首先提取第5列第1组数据然后第2组、第3组...各组数据依次提取其结果填在Form1.VSFlexGrid1.TextMatrix(1, 7)第7列。
例如:第5列第1组9行从上到下为9 10 15 16 17 88 99 145 187
第6列从上到下为1 3 5, 意思就是提取每组位置的第1 第3 第5个数据,上面提取为 9 10 17,其中9填在Form1.VSFlexGrid1.TextMatrix(1, 7),10填在Form1.VSFlexGrid1.TextMatrix(2, 7),17填在Form1.VSFlexGrid1.TextMatrix(3, 7)
提示crr(m, 1) = arr(i + brr(j, 1) - 1, 1)下标越界,帮我看看并修改,谢谢!
Private Sub Command16_Click()
Dim arr, brr
Dim i As Long, j As Long, k As Long
Dim f As Long, h As Long, m As Long, n As Long
ReDim arr(1 To 1000000, 1 To 1)
ReDim brr(1 To 1000, 1 To 1)
'第5列数据
n = 1
For h = 1 To VSFlexGrid1.Rows - 1 '数据
' For h = 5 To 20004
If Form1.VSFlexGrid1.TextMatrix(h, 5) <> "" Then
arr(n, 1) = Form1.VSFlexGrid1.TextMatrix(h, 5) ' DP列
n = n + 1
Else
Exit For
End If
Next
'第6列矩阵编号2
f = 1
For h = 1 To VSFlexGrid1.Rows - 1 '数据
If Form1.VSFlexGrid1.TextMatrix(h, 6) <> "" Then
brr(f, 1) = Form1.VSFlexGrid1.TextMatrix(h, 6) ' DP列 ' DP列
f = f + 1
Else
Exit For
End If
Next
ReDim crr(1 To 100000, 1 To 1)
'm = 0
For i = 1 To Int(UBound(arr) / 9) * 9 Step 9
For j = 1 To UBound(brr)
m = m + 1
If i + brr(j, 1) - 1 < UBound(arr) Then
crr(m, 1) = arr(i + brr(j, 1) - 1, 1)
End If
Next
Next
For m = 1 To UBound(crr)
' 输出到第7列
VSFlexGrid1.TextMatrix(m, 7) = crr(m, 1)
Next m
End Sub






