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.