我想实现把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

解决方案 »

  1.   

    For j = i + 1 To .Rows - 1这条语句出错了,当i=Rows-1
    j=Rows-1+1已经超过Rows
      

  2.   

    dim lngCount as Long
    lngCount = .Rows - 1  '用一个变量记住Grid的行数'   删除多余项
            For l = 1 To lngCount 
                If .TextMatrix(l, 18) = "R" Then    
                     .RemoveItem l
                     l = l - 1                      '删除一行后应该使当前行成为他的上   
                                                    '一行
                End If
            Next l
      

  3.   

    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    '   删除多余项
           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这就话有错误,还是下标越界。