Normalmente ese Error te sale cuando dice ah alcanzado el Inicio-1 o el Final+1 de los Registros de la consulta... quitale todo el procedimiento de rror y veras que tu error esta en la linea QUE TE SEÑALO ABAJO... El codigo dejalo de esta manera:
Código vb:
Ver originalSub Guardar()
If fg(0).FixedRows = fg(0).Rows Then
MsgBox "No hay datos para iniciar el proceso.", vbExclamation
Exit Sub
End If
For r = fg(0).FixedRows To fg(0).Rows - 1
lID = fg(0).Cell(flexcpText, r, 0)
lItem = fg(0).Cell(flexcpText, r, 15)
lFecha = IIf(fg(0).Cell(flexcpText, r, 9) = Empty, "Null", "'" & fg(0).Cell(flexcpText, r, 9) & "'")
'''''' AQUI TE SALE EL ERROR - Verifica los valor que envias al Execute...
DBconex.Execute "Update BDLogistica..Pagoefectivo set Fecha=" & lFecha & ",hora='" & fg(0).Cell(flexcpText, r, 10) & "',agencia='" & fg(0).Cell(flexcpText, r, 11) & _
"',total=" & Format(fg(0).Cell(flexcpText, r, 12), forImporte) & ",ctacte='" & fg(0).Cell(flexcpText, r, 13) & "',observ='" & fg(0).Cell(flexcpText, r, 14) & "' where id=" & lID & " and item=" & lItem
''''''
Next
Call Me.Datos
End Sub
O de lo contrario te sale el Error cuando haces... un NEXT mas al For... de lugar del FOR... Trabaja con do While not EOF(Componente)... si me entiende???