MSFlexGrid的默认值第一行第一列为固定行列,行列值从0开始。
MSFlexGrid1.RemoveItem 1 在固定行上面不能用RemoveItem 
所以会有你这个问题。试试
If MSFlexGrid1.Rows > 1 Then
        If MsgBox("确认要删除这条记录吗?", vbOKCancel + vbExclamation, "警告") = vbOK Then
            i = MSFlexGrid1.Row
            str= MSFlexGrid1.TextMatrix(i, 0)
            str= ""
            MSFlexGrid1.TextMatrix(i, 0) = str
            str= MSFlexGrid1.TextMatrix(i, 1)
            str= ""
            MSFlexGrid1.TextMatrix(i, 1) = str
            For j = i To (MSFlexGrid1.Rows - 2)
                MSFlexGrid1.TextMatrix(j, 0) = MSFlexGrid1.TextMatrix(j + 1, 0)
                MSFlexGrid1.TextMatrix(j, 1) = MSFlexGrid1.TextMatrix(j + 1, 1)
            Next j
            MSFlexGrid1.Rows = MSFlexGrid1.Rows - 1
            If MSFlexGrid1.Rows = 1 Then
                cmdDelRecord.Enabled = False
            End If
        End If
    End If

解决方案 »

  1.   

    msflexgrid1.fixedrows=0
    MSFlexGrid1.RemoveItem 1
    if msflexgrid1.rows>1 then msflexgrid1.fixedrows=1
      

  2.   

    mshflexgrid有一个条件,就是固定行数要比总行数小.
    如果你的固定行为一,总行不能小于二,如只有两行,那再删除就会出错.
    ,而且固定行也是不能删除的,还有mshflexgrid是的行是从0开始记数的,所以
    MSFlexGrid1.RemoveItem 1 是删除第二行.列是相同的道理.
    说了这些有点乱,不知能不能看明白.
      

  3.   

    可用ms.rows 判断总行数,然后,在使用RemoveItem方法