[Excel - 2016] Actualizar un combobox tras insertar datos

DESTIN8TE Mensajes publicados 40 Estado Miembro -  
cs_Le Pivert Mensajes publicados 8437 Estado Colaborador -
Hola,

Simplemente, tengo un formulario con 4 pestañas (Inserción, Modificación, ...).

Mi problema proviene de Modificación, donde tengo un comboBox que ya recupera las filas inscritas en mi tabla; si no hay ninguna, obviamente el comboBox no tiene datos (solo para información).

Si registro un nuevo dato con la pestaña Inserción y dejo el formulario abierto, en Modificación, el comboBox no recupera la última fila registrada.

Por lo tanto, me gustaría, sin tener que volver a abrir el formulario o incluso añadir un botón de actualizaciòn, que el comboBox se actualice automáticamente después de la inserción de la fila. El botón sería realmente como último recurso.

Aquí está el código para recuperar las filas:
Private Sub UserForm_Initialize() .......... MultiPgPOSTIT.Value = 0 'Code para Pg2Mod Dim Línea As Integer Línea = 9 Do While Sheets("DATA").Cells(Ligne, 3).Value <> "" Me.Pg2cmbBoxSelectRow.AddItem Sheets("DATA").Cells(Ligne, 3).Value Ligne = Ligne + 1 Loop ..........


PS: Sé que ahora mismo el comboBox "Pg2cmbBoxSelectRow" no se actualiza automáticamente ya que está en el Initialize.

Info: He probado poner este código en el código del botón de inserción en la pestaña Inserción, funciona pero me salen duplicados; si puedo evitar esos duplicados, normalmente estaría bien también.

Gracias y no dudes en pedir más detalles.

1 respuesta

  1. cs_Le Pivert Mensajes publicados 8437 Estado Colaborador 730
     
    Hola,

    ver aquí: rellenar un Combobox sin duplicados

    https://silkyroad.developpez.com/VBA/ControlesUserForm/#LII-F

    --
    @+ El Pivert
    0
    1. DESTIN8TE Mensajes publicados 40 Estado Miembro
       
      Ya ya lo he leído, pero no veo cómo adaptarlo a mi código.
      0
    2. DESTIN8TE Mensajes publicados 40 Estado Miembro
       
      Intenté esto:
       Private Sub UserForm_Initialize() Dim I As Integer For I = 9 To Range("C65536").End(xlUp).Row Me.Pg2cmbBoxSelectRow = Range("C" & I) If Me.Pg2cmbBoxSelectRow.ListIndex = -1 Then Me.Pg2cmbBoxSelectRow.AddItem Sheets("DATA").Range("C" & I).Value Next I 

      Lo que resulta de lo que hice.
      Pero todavía no tengo la nueva fila inscrita.
      0
    3. cs_Le Pivert Mensajes publicados 8437 Estado Colaborador 730
       
      Es normal que pongas este código al abrir el UserForm. Esto solo funciona una vez. Colócalo en un Botón como esto: Option Explicit Private Sub CommandButton1_Click() Dim I As Integer For I = 9 To Range("C65536").End(xlUp).Row Me.Pg2cmbBoxSelectRow = Range("C" & I) If Me.Pg2cmbBoxSelectRow.ListIndex = -1 Then Me.Pg2cmbBoxSelectRow.AddItem Sheets("DATA").Range("C" & I).Value End If Next I End Sub Il faut mettre la propiedad ShowModal del UserForm a False para poder trabajar sobre la hoja @+ Le Pivert
      0