我想实现把MSFlexGrid的第二列相同的产品名进行数量的相加,并把第二次出现相同的产品名删除。可我每次运行时都出现下标越界的错误,我不知道是怎么回事?请高手帮忙看看?我原先想用Sql语句实现的可就是不能实现合并?所以想用程序来实现?
With Grid2
'外层循环
For i = 1 To .Rows - 1
findstr = .TextMatrix(i, 2)
'内层循环
For j = i + 1 To .Rows - 1
If findstr = .TextMatrix(j, 2) Then
.TextMatrix(i, 5) = Val(.TextMatrix(i, 5)) + Val(.TextMatrix(j, 5)) '单台量累加
.TextMatrix(j, 18) = "R" '删除现同行
End If
Next j Next i ' 删除多余项
For l = 1 To .Rows - 1
If .TextMatrix(l, 18) = "R" Then '提示这个地方下标越界,为第53行
.RemoveItem l
End If
Next l
With Grid2
'外层循环
For i = 1 To .Rows - 1
findstr = .TextMatrix(i, 2)
'内层循环
For j = i + 1 To .Rows - 1
If findstr = .TextMatrix(j, 2) Then
.TextMatrix(i, 5) = Val(.TextMatrix(i, 5)) + Val(.TextMatrix(j, 5)) '单台量累加
.TextMatrix(j, 18) = "R" '删除现同行
End If
Next j Next i ' 删除多余项
For l = 1 To .Rows - 1
If .TextMatrix(l, 18) = "R" Then '提示这个地方下标越界,为第53行
.RemoveItem l
End If
Next l
j=Rows-1+1已经超过Rows
lngCount = .Rows - 1 '用一个变量记住Grid的行数' 删除多余项
For l = 1 To lngCount
If .TextMatrix(l, 18) = "R" Then
.RemoveItem l
l = l - 1 '删除一行后应该使当前行成为他的上
'一行
End If
Next l
'外层循环
For i = 1 To .Rows - 1
findstr = .TextMatrix(i, 2)
'内层循环
For j = i + 1 To .Rows - 1
If findstr = .TextMatrix(j, 2) Then
.TextMatrix(i, 5) = Val(.TextMatrix(i, 5)) + Val(.TextMatrix(j, 5)) '单台量累加
.TextMatrix(j, 18) = "R" '删除现同行
End If
Next j Next i ' 删除多余项
lngCount = .Rows - 1 '用一个变量记住Grid的行数
For l = 1 To lngCount
If .TextMatrix(l, 18) = "R" Then
.RemoveItem l
End If
Next l
语句这么写,还是If .TextMatrix(l, 18) = "R" Then这就话有错误,还是下标越界。