Datos en Combobox llamando final de fila

Con la rutina a continuación cargo ComboBox de un rango específico, pero ahora necesito que el combobox me ubique la última fila.

Dim rango, celda As Range
Set rango = Worksheets("Proveedores").Range("A2:A10")
For Each celda In rango
ComboBox1.AddItem celda.Value
Next celda

1 Respuesta

Respuesta
1

H o l a 

te paso 2 opciones 

Dim rango, celda As Range
u = Range("A" & Rows.Count).End(xlUp).Row
Set rango = Worksheets("Proveedores").Range("A2:A" & u)
'
For Each celda In rango
ComboBox1.AddItem celda.Value
Next celda

Set h1 = Sheets("Proveedores")
'
For i = 2 To h1.Range("A" & Rows.Count).End(xlUp).Row
ComboBox1.AddItem h1.Cells(i, "A")
Next i

valora la respuesta como Excelente o bueno para finalizar saludos!

O si deseas que muestre el ultimo dato de la columna A

Usa esto

Set h1 = Sheets("Proveedores")
'
u = h1.Range("A" & Rows.Count).End(xlUp).Row
ComboBox1. AddItem h1. Cells(u, "A")

valora la respuesta como Excelente o bueno para finalizar saludos!

Buen día, te pido disculpas no me explique bien en la pregunta, lo siento mucho. Lo que deseo es llamar toda la fila A de la hoja Proveedores, en dicha hoja se agregan constantemente nuevos proveedores y pues no es lo ideal dejar un rango especifico, sino que el combobox tenga la opción de leer toda la fila hasta su final. Inclusive el formulario que lleva el combobox tiene un botón para agregar proveedores desde allí y la idea es que después de agregarlo el combobox detecte este último registro. De nuevo siento mucho no haberme explicado bien.

Eso es precisamente lo que hace las 2 primeras opciones.

¿Has probado la macro?

Hola, claro que probé las macros, la primera solo me deja ver el primer registro de la fila, la segunda no me muestra nada y la tercera si funciona perfectamente me deja ver el último registro. Inclusive las probé en diferentes eventos como Initialize, en el combobox con Change y Enter, pero no, lo que te digo al inicio de este mensaje.

Es curioso lo que pasa, pero fíjate en la fila que inicia tus datos, en la imagen que te muestro es a partir de la fila 9

y el código por en Active 

Private Sub UserForm_Activate()
Set h1 = Sheets("Proveedores")
'
For i = 9 To h1.Range("A" & Rows.Count).End(xlUp).Row
ComboBox1.AddItem h1.Cells(i, "A")
Next i
End Sub

Hola, esta última rutina funciona, tal como la enviaste en el evento Active, llama los datos existentes en la hoja proveedores, pero cuando registro un nuevo proveedor, y aplico el combobox no me lo muestra, si cierro el formulario y lo vuelvo a abrir ya veo el último registro en el combobox. Mira, yo tengo una rutina, te la muestro a continuación, esta rutina la utilizo en un combobox que busca datos en dos hojas diferentes, lo que hice fue dejar en la rutina una sola hoja y me funciona, es decir me muestra los datos existentes y si registro un nuevo proveedor me lo muestra inmediatamente. Pero, ya se me daño un proyecto y me imagino que será por ir poniendo rutinas a mi antojo sin tener cuidado, y me da miedo que esta rutina que llama los datos de dos hojas me complique el proyecto al ponerla como te digo.

RUTINA ORIGINAL

Private Sub ComboBox1_Enter()
Dim Fila As Long
Dim Final As Long
Dim Lista As String

'Toda esta rutina agrega los items al ComboBox
For Fila = 1 To ComboBox1.ListCount
ComboBox1.RemoveItem 0
Next Fila

'Inspecciono la hoja de Clientes para determinar el final del listado, para getultimor tengo otra parte que va en un modulo, pues utilizo bastante esta rutina, es decir en varios formularios
Final = GetUltimoR(Hoja8)
'Agrego el listado de códigos de productos al ComboBox desde la hoja de existencias
For Fila = 2 To Final
If Hoja8.Cells(Fila, 1) > 0 Then
Lista = Hoja8.Cells(Fila, 1)
ComboBox1.AddItem (Lista)
End If
Next
End Sub

COMO LA CAMBIE

Private Sub ComboBox1_Enter()

Dim Fila As Long
Dim Final As Long
Dim Lista As String

'Toda esta rutina agrega los items al ComboBox

For Fila = 1 To ComboBox1.ListCount
ComboBox1.RemoveItem 0
Next Fila

'Me busca en la hoja
Final = GetUltimoR(Hoja2)
'Agrego el listado de la hoja Proveedores al ComboBox desde la hoja de Proveedores
For Fila = 2 To Final
If Hoja2.Cells(Fila, 1) > 0 Then
Lista = Hoja2.Cells(Fila, 1)
ComboBox1.AddItem (Lista)
End If
Next
End Sub

'Lo que hice, de manera irresponsable, fue cambiar la hoja existencias por la de proveedores, funciona si, pero temo que me genere conflicto en el proyecto, la rutina que me envias me sirve hasta el momento de registrar desde el formulario un nuevo proveedor, al utilizar el combobox no lo muestra, tengo que cerrar y volver a abrir el formulario para que esto suceda. Agradezco mucho tu paciencia

Envíame tu archivo [email protected] para revisarlo y me explicas que parte necesitas solucionar saludos!

Esta rutina borra el combobox

For Fila = 1 To ComboBox1.ListCount
ComboBox1.RemoveItem 0
Next Fila

esto debes usar esto para cargar el combobox y lo que tengas en el evento enter debes borrar

Set h1 = Sheets("Proveedores")
'
For i = 2 To h1.Range("A" & Rows.Count).End(xlUp).Row
ComboBox1.AddItem h1.Cells(i, "A")
Next i

¡Gracias! Hola, tome estas últimas rutinas, en el combobox evento change coloque la rutina para borrar el combobox, y en el evento enter la rutina para cargar los datos. Así me funciono, porque en initialize, ni en change me funciono. Esta bien lo que hice o me puede generar conflicto?.

Te faltó valorar la respuesta Excelente o bueno que está al píe de la respuesta saludos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas