Omo refrescar un combobox automáticamente

Si que pena con vos, que no te di la suficiente información al respecto, el problema es que el código que enviaste no lo entiendo muy bien, por eso lo copie y pegue.

La hoja se llama basedatos, el rango se llama name1 y es un rango dinámico que en el momento está en la columna B

Anexo la imagen donde esta el formulario y la imagen de la base de datos.

Ademas, te quería preguntar si por casualidad sabes como ordenar el combobox alfabéticamente sin que afecte la hoja donde están los datos, es decir que solo ordene cuando se ejecute el formulario. Si puedes ver la imagen, el listado no esta organizado alfabéticamente.

Ademas, tengo programado el botón buscar que me ubica los datos según el cliente seleccionado.

1 Respuesta

Respuesta
2

Envíame tu archivo con ejemplos para revisar tu userform y adaptar el código.

¿Es necesario que los nombres estén en el rango "name1"?

Es decir, si va a ser dinámico, ¿para qué los pones en un rango?. Simplemente se puede cargar todos los datos de la columna B en un combo, y no es necesario estar actualizando el rango "name1" cada que creas un registro.

Envíame tu archivo y me comentas si quitamos el "name1", sería más práctico.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “jorge oswaldo buritica galvis

Te regreso el código con lo siguiente:

- Actualicé la fórmula de name1, para que se actualice en automático el rango.

=DESREF(basedatos!$B$2, , , CONTARA(basedatos!$B:$B)-1,1)

- En el userorm, quité la propiedad Rowsource del combobox1.

- Ahora los nombres son cargados con el método AddItem

- Los nombres se cargan en el combo y son ordenados alfabéticamente con la rutina Agregar.

- Actualicé el código para Guardar Datos

- Después de crear un registro, el combo es cargado nuevamente.

- También el name1 se actualiza automáticamente.

- Al principio de todo el código declaré la variable h, para establecer la hoja "basedatos"

- Creé el evento UserForm_Activate, para establecer la hoja en el objeto h y para cargar los nombres en el combo.


Private Sub UserForm_Activate()
'Por Dante Amor
    'carga combo
    Set h = Sheets("basedatos")
    Dim i
    For i = 2 To h.Range("B" & Rows.Count).End(xlUp).Row
        Call Agregar(ComboBox1, h.Cells(i, "B").Value)
    Next
End Sub

'
Sub Agregar(combo As ComboBox, dato As String)
'por.DAM agrega los item únicos y en orden alfabético
    Dim i
    For i = 0 To combo.ListCount - 1
        Select Case StrComp(combo.List(i), dato, vbTextCompare)
            Case 0: Exit Sub 'ya existe en el combo y ya no lo agrega
            Case 1: combo.AddItem dato, i: Exit Sub 'Es menor, lo agrega antes del comparado
        End Select
    Next
    combo.AddItem dato 'Es mayor lo agrega al final
End Sub

Dim h As Object
Dim rpta As String
Dim Swiche As Integer
'Dim consecutivo As Integer
'
Private Sub btnguardar_Click()
'Guardar datos
    '
    Dim u
    u = h.Range("B" & Rows.Count).End(xlUp).Row + 1
    h.Range("A" & u).Value = txtcod.Value
    h.Range("B" & u).Value = ComboBox1.Value
    h.Range("C" & u).Value = txtcontacto.Value
    h.Range("D" & u).Value = txtdireccion.Value
    h.Range("E" & u).Value = txtfijo.Value
    h.Range("F" & u).Value = txtcel.Value
    h.Range("G" & u).Value = txtemail.Value
    h.Range("H" & u).Value = lblsaldo.Caption
    h.Range("I" & u).Value = txtestado.Value
    h.Range("J" & u).Value = txtnit.Value
    h.Range("K" & u).Value = txttipo.Value
    '
    Dim i
    ComboBox1.Clear
    For i = 2 To h.Range("B" & Rows.Count).End(xlUp).Row
        Call Agregar(ComboBox1, h.Cells(i, "B").Value)
    Next
    '
    MsgBox "Los datos se almacenaron con éxito", vbOKOnly, "Felicitaciones"
    txtcontacto.Text = ""
    txtdireccion.Text = ""
    txtfijo.Text = ""
    txtcel.Text = ""
    txtemail.Text = ""
    lblsaldo.Caption = " "
    txtestado.Text = " "
    txtnit.Text = " "
    txtcod.Text = " "
    txttipo.Text = " "
    ComboBox1.SetFocus
End Sub

.

.Sal u dos. Dante Amor. No olvides valorar las respuestas. G raci as

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas