¿Cómo debo definir un rango para RowSource?

Quiero que esta definición de rango=> Range(Cells(2, i), Cells(UltFila, i)) ... Me sirva como RowSource

UltFila = Cells(Rows.Count, 1).End(xlUp).Row

UltCol = Cells(1, Columns.Count).End(xlToLeft).Column

For i = 1 To UltCol

        ComboBox1.RowSource = Range(Cells(2, i), Cells(UltFila, i))

Next

Al Usarlo de esta manera el rango si funciona=> Range(Cells(2, i), Cells(UltFila, i)).Select

2 respuestas

Respuesta
2

No necesitas ningún bucle aquí.

La instrucción para asignar el rango al combo sería:

 ComboBox1.RowSource = "=" & Range(Cells(2, 1), Cells(UltFila, UltCol)). Address

Debes tener presente de que tu combobox tenga esa cantidad de columnas que te indique la variable UltCol

Si esta respuesta resuelve tu consulta no olvides valorarla (Excelente o buena).. sino comenta y la seguimos tratando.

¡Gracias! Elsa Matilde, funcionó agregándole ".address"

Mañana termino de probarlo y te aviso.

Pasando en limpio tu macro (no se necesitan bucles aquí), sería:

Private Sub ComboBox1_Change()
' por Eleazar
UltFila = Cells(Rows.Count, 1).End(xlUp).Row
Columna = ComboBox1.ListIndex + 1
ComboBox2.RowSource = Range(Cells(2, Columna), Cells(UltFila, Columna + 1)).Address
End Sub

Sdos!

Respuesta
1

Solo necesitaba colocar . Address al final del rango. La idea es no usar el largo Select Case y ahora si funciona bien. También tienes razón de no usar un bucle. De nuevo mil gracias, espero contar con tu valioso apoyo en otras cositas que tengo pendiente.

A continuación el código completo:

Private Sub ComboBox1_Change()

     UltFila = Cells(Rows.Count, 1).End(xlUp).Row
     Columna = ComboBox1.ListIndex + 1

'Select Case ComboBox1
' Case ""
'      Exit Sub
' Case "1er Nombre"
'     Range("A2").Select
'     ComboBox2.RowSource = "A2:A" & UltFila
' Case "2do Nombre"
'     Range("B2").Select
'     ComboBox2.RowSource = "B2:B" & UltFila
' Case "1er Apellido"
'     Range("C2").Select
'     ComboBox2.RowSource = "C2:D" & UltFila
' Case "2do Apellido"
'      Range("D2").Select
'      ComboBox2.RowSource = "D2:D" & UltFila
' Case "Cedula"
'     Range("E2").Select
'     ComboBox2.RowSource = "E2:E" & UltFila
' End Select

ComboBox2.RowSource = Range(Cells(2, Columna), Cells(UltFila, Columna + 1)).Address
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas