Error(se reinicia el excel) al ingresar un nuevo item mediante un formulario a una tabla de una hoja de excel

Mediante un formulario en excel ingreso datos a una tabla en una hoja de excel, para ingresar los datos utilizo un módulo para encontrar la primera fila en blanco e inserto ahí los nuevo datos.

El problema sucede cuando inserto un nuevo item en la tabla cuando la tabla está cerrada de un rango hasta tal rango, por ejemplo A:1 hasta N:7 tengo datos y hasta allí está la tabla.

Y cuando inserto nuevos datos en la fila 8 desde la columna A hasta la N, el excel se cuelga y reinicia.

Con éste código(que está en un módulo y luego lo llamo en el botón Guardar) grabo los datos:

Sub guardar()
Dim sh As Worksheet
Dim ufila As Long
Set sh = ThisWorkbook.Sheets("Database")
ufila = nReg(Hoja1, 1, 1) 'aquí busco la primera celda vacía
With sh
.Cells(ufila, 1) = UserForm1.Txt_id.Text
.Cells(ufila, 2) = UserForm1.Txt_nombres.Text
.Cells(ufila, 3) = UserForm1.Txt_dni.Text
.Cells(ufila, 4) = UserForm1.Txt_celular.Text
.Cells(ufila, 5) = UserForm1.Txt_email.Text
.Cells(ufila, 6) = UserForm1.ComboBox1.Text
.Cells(ufila, 7) = UserForm1.Txt_razonsocial.Text
.Cells(ufila, 8) = UserForm1.Txt_ruc.Text
.Cells(ufila, 9) = UserForm1.Txt_usuariosol.Text
.Cells(ufila, 10) = UserForm1.Txt_clavesol.Text
.Cells(ufila, 11) = UserForm1.Txt_usuarioafp.Text
.Cells(ufila, 12) = UserForm1.Txt_claveafp.Text
End With
Cells(ufila, 13) = Application.UserName
Cells(ufila, 14) = [Text(Now(),"dd-mm-yyy hh:mm:ss")]
End Sub

La solución que hasta ahora encontré es ampliar la tabla:

Y después de ello graba los datos y ya no se cuelga:

Pero el inconveniente es que ahora el Listbox me filtra datos vacíos:

Para cargar los datos al listbox utilizo lo siguiente:

Sub Reset()
With UserForm1
    .Txt_nombres.Value = ""
    .Txt_dni.Value = ""
    .Txt_celular.Value = ""
    .Txt_email.Value = ""
    .ComboBox1.Clear
    .ComboBox1.AddItem "I.P.C.N."
    .ComboBox1.AddItem "I. LIMA"
    .ComboBox1.AddItem "O.Z. CHIMBOTE"
    .Txt_razonsocial.Value = ""
    .Txt_ruc.Value = ""
    .Txt_usuariosol.Value = ""
    .Txt_clavesol.Value = ""
    .CheckBox1.Value = False
    .Txt_usuarioafp.Value = ""
    .Txt_claveafp.Value = ""
    .Txt_usuarioafp.Enabled = False
    .Txt_claveafp.Enabled = False
    .Lst_database.ColumnCount = 14
    .Lst_database.ColumnHeads = True
    .Lst_database.ColumnWidths = "17;110;45;48;105;75;57;110;52;50;53;48;80;85"
    .Lst_database.RowSource = "Tabla_contribuyentes"
End With
End Sub

Lo que quiero es que la tabla esté cerrada y por ejemplo de A:1 hasta N:8 y cuando se ingrese un nuevo dato se actualice la tabla con ese nuevo item.

Respuesta
1

[Hola

Los datos en las Tablas no se insertan del mismo modo que en un rango "común" ya que ocasionan el dilema que mencionas (es un "bug" de Excel).

Mira esta conversación:

Cargar datos en una tabla contenida en una hoja de excel mediante un botón.Cargar datos en una tabla contenida en una hoja de excel mediante un botón.

Muchas gracias Abraham, modifiqué el código para insertarlo mediante la forma que me mencionas e igual se reinicia el Excel. La verdad me paso mucho tiempo revisando el problema y no lo encuentro, te agradezco de todas formas(supongo que es porque el listbox tiene más de 10 columnas porque en casos anteriores con menos de 10 columnas no me había sucedido ello).

Coloca el archivo en algún Drive y comparte por aquí el enlace.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas