¿Como Actualizar lixtBox cuando ingreso datos desde un formulario?

Tengo un formulario que contiene un lixBoxt que me muestra mi base de datos y 6 TextBox que ingresan datos . Lo que necesito es que cuando ingrese valores mediante el formulario se refleje en mi lixtBox y se actualice automáticamente sin tener que cerrar el formulario para que actualice los datos.

Respuesta
1

[Hola

No das detalles pero, asumiendo que envías los datos en el evento "Click" de un botón, pues después de enviar los datos a la hoja, en ese mismo evento lo que debes hacer es por ejemplo "limpiar" el "Listbox":

Me. ListBox1. Clear 'si llenas con Additem
Me.ListBox1.RowSource = ""  'si lo llenas con RowSource

Y luego usas el mismo procedimiento que cuando cargas el "UserForm"

Abraham Valencia

PD: Estoy asumiendo varias cosas por obvias razones (falta de datos) pero de ser así, debería de funcionar

Este es mi formulario. En la parte izquierda ingreso datos y se guardan en una hoja de excel, lo que hace mi lixtBox es reflejar lo que guardo en la hoja. Pero el problema es que cuando ingreso un nuevo registro si se guarda en la hoja pero para que se refleje en el lixtBox, tengo que cerrar y abrir de nuevo el formulario para que aparezca.  No se si hay un método reflesh que me actualice mi lixtBox sin tener que cerrarlo 

[Hola

Excel es una hoja de cálculo, no un sistema gestor de base de datos, por ende no tiene una instrucción propia que sea similar a un "refresh". Justamente por eso te daba/indicaba dos formas de "limpiar" el "ListBox" (dependiendo de como lo "llenes") y te decía que simplemente vuelvas a usar el procedimiento con que lo llenas al "iniciar" el "userform".

Lo de tu imagen no ayuda a entender ya que solo muestras los objetos, no código.

Abraham Valencia

Private Sub UserForm_Initialize()
Dim fila As Long
On Error Resume Next
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Set b = Sheets("Formulario")
uf = b.Range("A" & Rows.Count).End(xlUp).Row
uc = b.Cells(1, Columns.Count).End(xlToLeft).Address
wc = Mid(uc, InStr(uc, "$") + 1, InStr(2, uc, "$") - 2)
With Me.ListBox1
.ColumnCount = 10
.ColumnWidths = "60 pt;50 pt;40 pt;60 pt;60 pt;60 pt;60 pt; 60 pt; 60 pt; 60 pt"
'.RowSource = "Hoja2!A1:" & wc & uf
End With
'Adiciona un item al listbox reservado para la cabecera
UserForm1.ListBox1.AddItem

For i = 2 To uf
' strg = b.Cells(i, 4).Value
'If UCase(strg) Like UCase(TextBox2.Value) & "*" Then
Me.ListBox1.AddItem b.Cells(i, 1)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = b.Cells(i, 2)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = b.Cells(i, 3)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = b.Cells(i, 4)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = b.Cells(i, 5)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 5) = b.Cells(i, 6)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 6) = b.Cells(i, 7)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 7) = b.Cells(i, 8)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 8) = b.Cells(i, 9)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 9) = b.Cells(i, 10)
' End If
Next i

'Carga los datos de la cabecera en listbox
For ii = 0 To 10
UserForm1.ListBox1.List(0, ii) = Sheets("Formulario").Cells(1, ii + 1)
Next ii

Application.DisplayAlerts = True
Application.ScreenUpdating = True

Así es como lleno mi listBox. ¿Se puede actualizar con un botón? ¿Cuándo ingreso información nueva?

Prueba así:

Todo eso colócalo en una rutinadel tipo:

Private Sub LlenarListBox ()

Ubicado en el módulo del "Userform" y en el evento "Initialize" que quede solo:

Call LlenarListBox 

Luego, en el ¿evento? Que envía tus datos de los "TextBox" a la hoja, después de eso colocas:

Me. ListBox1. Clear

Call LlenarListBox 

Y listo.

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas