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 de Claudio Cruz
1
1
Claudio Cruz, Es mejor encender una vela que maldecir la oscuridad
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.
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
- Anónimoahora mismo
Respuesta de Victor Perdomo
1
1
Victor Perdomo, Conocimientos avanzados en Excel, programación VB
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.