Combo box al inicio

Estimado experto;
Necesito que al abrir una hoja de cálculo aparezca un combo box desplegable con una lista de 50 opciones que están en el rango "medit" y que al elegir una de ellas la inserte en la celda (A3). Gracias anticipadas.

3 respuestas

Respuesta
1
Supuestos:
En la hoja sheet2 existe un rango denominado "medit" el cual tiene las 50 opciones que necesitas.
Cuando abres el libro la hoja activa siempre sera sheet1 y automáticamente te mostrara un sencillo formulario con un combo box, al seleccionar una opción y dar clic en Aceptar, insertara una linea con el valor de la opción escogida.
Nota: Las referencias que hago en inglés es porque mi Excel lo tengo en ese idioma, por lo que si tu versión es en español, deberás traducir.
1. Clic derecho sobre el nombre de la hoja sheet1, y luego clic en View code.
2. En la nueva ventana, das doble clic sobre ThisWorkbook dentro del explorador de proyectos, en la ventana del código escribe lo siguiente:
Private Sub Workbook_Open()
Automaticamente Excel cerrara el codigo con End Sub
Luego, clic derecho sobre ThisWorkbook y seleccionas la opción Userform dentro del submenú Insert del menu desplegable que aparece.
Aparece la ventana para construir tu formulario, y del cuadro de herramientas vas a seleccionar la opción ComboBox y luego lo dibujas sobre tu formulario.
Posteriormente, dibujas un botón abajo con la opción CommandButton.
En este punto puedes guardar tu libro, para efectos prácticos, he nombrado este libro como "Eudaldo.xls"
Luego, seleccionas el formulario y oprimes F7 y escribes lo siguiente:
Private Sub UserForm_Initialize()
Dim Rango$
    Workbooks("Eudaldo.xls").Activate
    ActiveWorkbook.Sheets("Sheet2").Activate
    Application.Goto reference:="medit"
    Rango= Selection.Address
    With Me.ComboBox1
        .Value = ""
        .Enabled = True
        .RowSource = Rango
        .BackColor = RGB(240, 242, 239)
        .ForeColor = RGB(0, 0, 136)
     End With
    Me.CommandButton1.Enabled = True
    ActiveWorkbook. Sheets("Sheet1"). Activate
    Me. ComboBox1. SetFocus
End Sub
Bueno, lo siguiente es configurar la acción de insertar la fila, esto se realizará cuando des clic en el botón aceptar, así que a crear el código.
En tu formulario, seleccionas el botón y oprimes F7 y en la ventana que sale escribes lo siguiente:
Private Sub CommandButton1_Click()
    Workbooks("Eudaldo.xls").Activate
    ActiveWorkbook. Sheets("Sheet1"). Activate
    Range("A3").Select
    Selection.EntireRow.Insert
    ActiveCell.Value = Me.ComboBox1.Value
    Unload Me
End Sub
Bien, con esto ya tienes listo tu formulario, solo falta hacer un pequeño ajuste para que este formulario salte cada vez que abras tu libro.
Para ello, volvemos al código del objeto ThisWorkbook dando doble clic sobre él y verificas que el código final sea:
Private Sub Workbook_Open()
    UserForm1.Show
End Sub
Esto a grandes rasgos va a hacer lo que necesitas, seguramente le puedes agregar muchas más cosas.
Respuesta
1
Si ya cuentas con el combo, primero ordenas el rango y luego lo cargas.
Supongamos que el rango medit es a1:a50:
Private Sub Combobox1.Click()
    Dim PROD As Object
    Set PROD = Worksheets("Sheet1").Cells(2, 1).Resize _
      (Worksheets("Sheet1").Cells(2, 1).CurrentRegion.Rows.Count - 1)
    Worksheets("Sheet1").Cells(2, 1).Sort _
    Key1:=Worksheets("PRODUCTOS").Cells(2, 1), _
    Order1:=xlAscending, Header:=xlYes, _
    OrderCustom:=1, MatchCase:=False, _
    Orientation:=xlTopToBottom
    ComboBox2.Text = ""
    For Each Indice In PROD
     ComboBox2.AddItem Indice.Value
    Next
End Sub
Luego colocas el valor en A3:
Private Sub Combobox1.Change()
  Range("A3") = ComboBox1.Text
End Sub
Respuesta
1
Selecciona la celda donde quieras que aparezca el combo box, ve a datos validación, en permitir selecciona lista y en origen pon =medit. Ahora solo pon en la celda A3 que sea igual al valor de la celda de la lista.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas