Cargar Combobox con datos de 2 columnas

A ver si me resolvéis esto. Tengo un combobox y quisiera carga en este los datos de 2 columnas.
La rutina que tengo es esta, pero solo consigo cargar la 1º columna ¿Como seria la rutina para que ponga los datos de la columna1 y la columna2 en la misma fila del combobox. La columna 1 contiene (Nombres) y la columna2 tiene (Apellidos)?
Un saludo a todos.
Ejem:
Private Sub UserForm_Initialize()
Set DB_Datos = Sheets("Personal").Cells(2, 1).Resize(Sheets("Personal").Cells().End(xlDown).Row - 1)
Comb_Pers.Clear
For Each DatoA In DB_Datos
Comb_Pers.AddItem DatoA, ListIndex = ¡Serie
Next
End Sub

1 respuesta

Respuesta
1
Hay una forma más sencilla de llenar los datos de un UserForm, es dándole a la propiedad list del combobox el valor de un rango de datos y si quieres dos columnas, solo pon el rango de dos Columnas, checa:
Private Sub UserForm_Initialize()
Combo.List = Range("A4", Range("B65536").End(xlUp)).Value
Combo.ColumnCount = 2
Combo.ColumnWidths = 30  'Puedes Omitir esta linea, es para el ancho de la columna
End Sub
1. Dar Rango de 2 Columnas
2. Decirle al Combobox que son dos columnas (ColumnCount)
Gracias, por la aclaración pero ahora el problema lo tengo que solo función esta rutina si previamente la hoja donde están los datos esta seleccionada.
El problema es que esa hoja sera una hoja oculta.
Y Otro contratiempo, es que cuando selecciono una posibilidad solo se ve la primera columna, (me explico, cuando desplegó el combobox efectivamente se ve las 2 columnas, pero a la hora de seleccionar solo se ve la primera columna) y eso es un problema para mi porque más adelante hago una llamada al valor del combobox y claro aparece incompleto.
De todas maneras gracias por el tiempo empleado.
Ok, puedes poner el siguiente código para lo de la hoja:
Application.screenupdating = False 'Asi no se que elijes la hoja oculta
Sheets("Tu Hoja").visible = true
Sheets("Tu Hoja").select
Ahora para lo del combobox, seria mejor poner un combobox para la 1a columna, y una etiqueta o textbox para la 2a Columna y la rutina seria así.
Sub Combobox1_Change()
Dim N as Long
N = Combobox1.ListIndex + 'Mas el numero de la fila donde comienza tu lista
Label1 = Cells(N, 2)  'N por la fila y 2 si fuera la columna B donde esta los nombres
End Sub
Y cuando hagas la "llamada" al combobox también haz la llamada al Label o Textbox

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas