Programar un combox

hola

tengo un formulario con un combobox me despliega una lista de cinco palabras, muzquiz, barroteran, palau, sabinas y pueblo, al seleccionar palau quiero que se insertarse en la celda a5 y al seleccionar muzquiz se inserte en la cel a6 y asi sucesivamente como puedo logar esto.

te agradezco la ayuda que me puedas brindar

Respuesta
1

He asumido que quieres que tu listado en el combobox sea dinámico y puedas cambiar tanto los nombres de la lista, como la celda donde se copiara cada caso he inclusive la posibilidad que incluyas mas de 5 datos.

Yo he considerado una hoja (llamada BD) donde estarán los datos que queremos cargar en el combobox en la columna A y la celda donde se copiara en la Columna B, puedes incluir los datos que quieras.

Luego estoy considerando que al ejecutar el seleccionar en el combobox, se copiara automáticamente el dato en la celda configurada.

Crea un formulario ("UserFform1"), y colócale un combobox ("ComboBox1"). No les he cambiado de nombre.

Luego le das doble click al formulario y pegar el código descrito a continuación.

Le he agregado algunas instrucciones adicionales para que no haga pestañeo con las pantallas y otras,

Private Sub ComboBox1_Change()
Application.ScreenUpdating = False
Sheets("DESTINO").Select
Range(ComboBox1.List(ComboBox1.ListIndex, 1)).Select
ActiveCell = ComboBox1.List(ComboBox1.ListIndex)
Application.ScreenUpdating = True
End Sub
Private Sub UserForm_Initialize()
Application.ScreenUpdating = False 'Desactivar la actualización en pantalla
ComboBox1.ColumnCount = 2 'Asignamos al combo de 2 columnas
Sheets("BD").Select
Range("A2").Select 'Seleccionar la primara celda donde se iniciará la verificación
Do While Not IsEmpty(ActiveCell)
'Mientras la celda Activa no sea una celda en blanco
'Pregunto si el contenido de la celda Activa no esta contenido en la variable datos1
If (InStr(datos1, ActiveCell) = 0) Then 'Si no esta contenido, lo agrego a la variable datos1 con una ","
datos1 = datos1 & "," & ActiveCell
datos2 = datos2 & "," & ActiveCell(1, 2)
End If
ActiveCell.Offset(1, 0).Select 'Paso a la siguiente celda (la fila siguiente)
Loop
datos1 = VBA.Right(datos1, VBA.Len(datos1) - 1) 'Le quitamos la primera "," (coma)
dato_individual1 = Split(datos1, ",") 'Le asignamos como datos separados
datos2 = VBA.Right(datos2, VBA.Len(datos2) - 1) 'Le quitamos la primera "," (coma)
dato_individual2 = Split(datos2, ",") 'Le asignamos como datos separados
For i = 0 To UBound(dato_individual1)
ComboBox1.AddItem
ComboBox1.List(i, 0) = dato_individual1(i) 'Cargamos el COMBOBOX
ComboBox1.List(i, 1) = dato_individual2(i)
Next
ComboBox1.ColumnWidths = "100pt;1pt" 'Vamos a ocultar la segunda columna, dándole un ancho muy pequeño
Application.ScreenUpdating = True 'Activar la actualización en pantalla
End Sub

Espero que con esto te baste. Cualquier cosa me cuentas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas