Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)    '点击记录
    'DataGrid控件中的焦点变换
    '检查是否为空行
    goodsid = 0
    goodsname = ""
    
    If DataGrid1.Columns(0).Text = "" Then
       Exit Sub
    End If
    
    goodsid = DataGrid1.Columns(0).Text
    goodsname = DataGrid1.Columns(1).Text
End Sub当DataGrid控件中无记录时,点击此控件,会出现‘7005’系统错误,想请问下应该怎样解决?

解决方案 »

  1.   

    加入一个判断,无记录则跳出此过程。
    if datagrid.rows>0 then
       If DataGrid1.Columns(0).Text = "" Then
           Exit Sub
        End If
    else
        exit sub
    end if
      

  2.   

    我也出现你的情况,现在用on err解决的,这样就不报错了Private Sub DataGrid1_Click()
    On Error Resume Nextno = DataGrid1.Columns(0)
    End Sub
      

  3.   

    谢谢两位,按照你们说的方法,我解决了问题。但是现在还碰见了一个问题,也想请教下
    还是关于DataGrid控件的
    当我从数据库中读数据到DataGrid控件中,但是数据库中的对应记录可能超过了90,就出现了如下的系统错误:
    运行时错误‘6148’,行号无效
      

  4.   

    For i = 1 To Adodc1.Recordset.RecordCount
            DataGrid2.Row = i - 1
            totalmoney = DataGrid2.Columns(8) + totalmoney
            paymoney = DataGrid2.Columns(9) + paymoney
            sparemoney = DataGrid2.Columns(12) + sparemoney
        Next i光标停在DataGrid2.Row = i-1 系统说:运行时错误‘6148’,行号无效
    能不能解决?
      

  5.   

    是不是因为超出了DataGrid2的最大行数,应该怎样设置最大行数阿?
      

  6.   

    不是,datagrid没有这种设置,
    应该是你数据表中第21条数据有问题
      

  7.   

    我试过了,第21条记录没有问题
            DataGrid2.Row =21
            totalmoney = DataGrid2.Columns(8) + totalmoney
            paymoney = DataGrid2.Columns(9) + paymoney
            sparemoney = DataGrid2.Columns(12) + sparemoney
    这样可以执行,且计算的数值都正确