Buenas tardes estimados,
tengo el siguiente botón de guardar que registra información desde un formulario, sin embargo al iniciar el primer registro me arroja error : se ha producido el error 91 variable de objeto o bloque with no establecido y señala lo resaltado:
Despues funciona correctamente cuando ya hay valores insertado el problema es solo para el primer registro. Por favor si me podrían ayudar a solucionar el error.
Muchas gracias.
PrivateSub cmdguardar_Click()
Dim nombres AsVariant
Dim dnis AsVariant
Dim uFT, uF1 AsLong
Dim Celda As Range
Dim i%
Dim fila As ListRow
Dim tabla As ListObject
'Declaramos la tabla
Set tabla = ActiveSheet.ListObjects("Tabla2")
'Definimos las matrizes de los nombres y dni
nombres = Split(txtcol, vbCrLf) dnis = Split(txtdni, vbCrLf)
'Recorremos para cada nombre (si solo hay 1, no importa, solo hará un ciclo)
For i =0To UBound(nombres)
'Última fila de la tabla
uFT = tabla.Range.Columns(1).Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 'Pasamos los datos a la tabla
tabla.DataBodyRange.Cells(uFT,1)= Val(Txtn)---> LINEA ERROR
tabla.DataBodyRange.Cells(uFT,1).Offset(0,1)= cboregimen tabla.DataBodyRange.Cells(uFT,1).Offset(0,2)=CDate(txtfecha)
tabla.DataBodyRange.Cells(uFT,1).Offset(0,3)= cbounidad
tabla.DataBodyRange.Cells(uFT,1).Offset(0,4)= nombres(i)
tabla.DataBodyRange.Cells(uFT,1).Offset(0,5)= dnis(i)
tabla.DataBodyRange.Cells(uFT,1).Offset(0,6)= cbocargo
tabla.DataBodyRange.Cells(uFT,1).Offset(0,7)= txtjornal
'Aumentamos el contador del Nº
Txtn = Txtn +1Next i
'Vaciamos los 2 textbox
txtcol =""
txtdni =""
'Vaciamos las matrizes
Erase nombres
Erase dnis
EndSub
Prueba esto en el bucle:
If tabla.ListRows.Count = 0 then
tabla.ListRows.Add
End If
Por otra parte, un par de comentarios poco importantes:
Tu declaración Dim i% yo la sustituiría por
Dim i as Integer
Porque esto último es mucho más claro que lo que tú tienes.
Y creo que es interesante nombrar las tablas y no dejar que se llamen Tabla2, pues eso facilita mucho las cosas cuando vuelves al código tiempo después, o cuando otro retoma lo que tú has hecho.
Un saludo