Crear un combo actualizable al escribir, en excel

Es una pregunta para Dante Amor

Me gustaría que en los combos creados en un formulario al escribir valores si por ejemplo no encuentra ningún valor coincidente en la listado del combo que se despliega, se guardará el valor escrito y se autoañadiera en el listado del combo para ampliar así los valores del combo para la próxima vez que lo abra.

1 respuesta

Respuesta
1

H o l a:

Listo, este es el código para actualizar en los combos valores nuevos.

'
Private Sub CommandButton1_Click()
'Por.Dante Amor
    'If TextBox1 = "" Then cad = cad & "CODIGO. "
    If TextBox1 = "" Then cad = cad & "TITULO. "
    'If TextBox2 = "" Then cad = cad & "TOMO-VOLUMEN. "
    If TextBox3 = "" Then cad = cad & "AUTOR. "
    If TextBox4 = "" Then cad = cad & "EDITORIAL. "
    If TextBox5 = "" Then cad = cad & "AÑO. "
    If ComboBox1 = "" Then cad = cad & "IDIOMA. "
    If ComboBox2 = "" Then cad = cad & "TIPO-DOCUMENTOS. "
    If ComboBox3 = "" Then cad = cad & "CATEGORIA."
    If cad <> "" Then
        MsgBox "Faltan los siguientes datos: " & cad
        For i = 1 To 5
            If Controls("TextBox" & i) = "" And i <> 2 Then
                Controls("TextBox" & i).SetFocus
                Exit Sub
            End If
        Next
        For i = 1 To 3
            If Controls("ComboBox" & i) = "" Then
                Controls("ComboBox" & i).SetFocus
                Exit Sub
            End If
        Next
        Exit Sub
    End If
    '
    'Guardar datos
    Set h1 = Sheets("TITULOS")
    u = h1.Range("A" & Rows.Count).End(xlUp).Row + 1
    h1.Cells(u, "A") = Label1
    For i = 1 To 5
        h1.Cells(u, i + 1) = Controls("TextBox" & i)
    Next
    j = 7
    For i = 1 To 3
        h1.Cells(u, j) = Controls("Combobox" & i)
        j = j + 1
    Next
    '
    'Actualizar combos
    Set h3 = Sheets("CATALOGOS")
    For i = 1 To 3
        Set b = h3.Columns(i).Find(Controls("Combobox" & i), lookat:=xlWhole)
        If b Is Nothing Then
            u = h3.Cells(Rows.Count, i).End(xlUp).Row + 1
            h3.Cells(u, i) = Controls("Combobox" & i)
        End If
    Next
    For i = 2 To h3.Range("A" & Rows.Count).End(xlUp).Row
        ComboBox1.AddItem h3.Cells(i, "A")
    Next
    For i = 2 To h3.Range("B" & Rows.Count).End(xlUp).Row
        ComboBox2.AddItem h3.Cells(i, "B")
    Next
    For i = 2 To h3.Range("C" & Rows.Count).End(xlUp).Row
        ComboBox3.AddItem h3.Cells(i, "C")
    Next
    '
    MsgBox "Registro guardado"
    '
    'Limpiar datos
    For i = 1 To 5
        Controls("TextBox" & i) = ""
    Next
    For i = 1 To 3
        Controls("Combobox" & i) = ""
    Next
    reg = Val(reg) + 1
    Label1 = "R" & Format(reg, "000000")
    TextBox1.SetFocus
End Sub

S a l u d o s

Funciona muy bien!!!

Lo único es que cuando se actualiza el combo con el nuevo valor, el valor aparece al final del listado de valores del combo y no se ordenda alfabéticamente en el listado.

¿Se puede agregar el nuevo valor en orden alfabético y tener ese combo ordenado sus valores de manera alfabética?

Si esto no me lo puedes responder porque sería otra pregunta pues no pasa nada... da igual, lo dejamos como está. Es que tengo un número limitado de preguntas y prefiero reservarlas para cosas más relevantes. Ya me dices...

Un saludo y gracias

Lo corrijo, y en el siguiente archivo que te envíe lo pruebas

¡Gracias! 

Pues voy pensando nuevas posibilidades para mejorar el formulario y ya te digo qué nuevas preguntas se me ocurren, seguro que muchas je je.

Un saludo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas