Error variable de objeto para señalar una tabla VBA

2 envíos / 0 nuevos
Último envío
Mark2000
Imagen de Mark2000
Offline
última acción: Hace 6 años 2 meses
alta: 05/02/2018 - 04:14
Puntos: 25
Error variable de objeto para señalar una tabla VBA

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

Etiquetas: 

Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 3 semanas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
Prueba esto en el bucle:If

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