Actualizar combobox sin salir del form (vba excel)

Tengo un combobox vacío en un form1, y un botón que me lleva a form2.

En el form 2 agrego items al combobox1 (se guardan en una hoja excel).

Pero al volver al form1 el combobox está vacío. Si cierro y abro el form el combobox está rellenado de esos items antes agregados.

Lo que quiero hacer es que el combobox se actualize sin necesidad de cerrar y abrir el form.

2 Respuestas

Respuesta
2

Hol.a

Probablemente solo estás usando el evento "Initialize" para llenar el "Combobox", muestra como lo llenas para poder recomendarte que hacer.

Salu2

Abraham Valencia

'codigo en el frm_articulo_nuevo
Private Sub UserForm_Initialize()
'Cragr items al cbx_plataformas con la fila 1 de la hoja plataformas
    cbx_plataforma.Clear
    Sheets("plataformas").Select
    Range("a1").Select
        Do While ActiveCell.Value <> ""
            cbx_plataforma.AddItem ActiveCell
            ActiveCell.Offset(0, 1).Select
        Loop    
End Sub
Private Sub cbx_plataforma_Change()
'Cargar items en cbx_consola dependiendo que se haya elegido en cbx_plataformas.
    cbx_consola.Clear
    Sheets("plataformas").Select
    indice = cbx_plataforma.ListIndex + 1
    Cells(2, indice).Select
        Do While ActiveCell.Value <> ""
            cbx_consola.AddItem ActiveCell
            ActiveCell.Offset(1, 0).Select
        Loop
End Sub
' Este codigo es para agregar nombres de plataformas en la hoja plataformas.
Private Sub cmb_aceptar_Click()
    Dim UltCol As Integer
    UltCol = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
    UltCol = UltCol + 1
    Hoja6.Cells(1, UltCol) = Me.txt_plataforma
    MsgBox "Plataforma añadida", vbInformation, "fjpg GAMES"
    Unload Me
End Sub
Private Sub cmb_cancelar_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
    Sheets("plataformas").Select
    Range("a1").Select
End Sub

este es el codigo que tengo en el evento cbx_plataforma_Change y UserForm_Initialize. Coloco tambien el codigo que tengo en otro userform para agregar nombre de plataformas.

A ver que se puede hacer

Una forma es que en el botón agregues no solo a la hoja sino al "Combobox" del "UserForm":

Private Sub cmb_aceptar_Click()
    Dim UltCol As Integer
    UltCol = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
    UltCol = UltCol + 1
    Hoja6.Cells(1, UltCol) = Me.txt_plataforma
UserForm1.cbx_plataforma.AddItem Me.txt_plataforma
    MsgBox "Plataforma añadida", vbInformation, "fjpg GAMES"
    Unload Me
End Sub

Donde dice "Userform1", tú coloca el nombre correspondiente.

Salu2

Abraham Valencia

Respuesta
1

Este ejemplo, con este código cargar el combo box al iniciar el formulario

Private Sub UserForm_Initialize()
Application.ScreenUpdating = False
ComboBox1.Clear
Sheets("Códigos").Select
Range("C2").Select
While ActiveCell <> Empty
ComboBox1.AddItem ActiveCell
ActiveCell.Offset(1, 0).Select
Wend
End Sub

Entonces cuando cargues datos nuevos solo debes volver a cargar el combbox, previamente debes limpiar los datos porque si no los duplicarías así debes poner el código

ComboBox1.Clear
Sheets("Códigos").Range("C2").Select
While ActiveCell <> Empty
ComboBox1.AddItem ActiveCell
ActiveCell.Offset(1, 0).Select
Wend

https://youtu.be/smL4A-aRjCM

https://youtu.be/Q1sSsvvsXM0

https://youtu.be/vkzVo2wxNkE

https://youtu.be/patMHGKQEHQ

https://youtu.be/ut0Ss2vPsTE

https://youtu.be/wDXNL2p6f9c

visita https://programarexcel.com descarga cientos de macros gratis

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas