Programando en excel

Hola lo que me sucede es que estoy realizando un programa ejecutado desde excel con un formulario creado con el editor de visual basic. Y no se como hacer para ver un rago de datos la hoja de excel en un combobox. Gracias

4 respuestas

Respuesta
1
Imagino que estás trabajando con la Barra de Herramientas Cuadro de Controles ... si no es así me avisas.
La rutina para llenar el Combo es:
ComboBox1. Clear
For fila = 2 To 20
ComboBox1.AddItem Range("A" & fila).Value
Next fila
ComboBox1.ListIndex = 0
El primer comando borra el contendo actual del Combo, el ciclo for llena el Combo con los datos de la COlumna A filas 2 a la 20 y el último despliega el primer valor ne el Combo.
Suerte !
Rogers R.
Hola regers:
Te agradezco mucho por tu respuesta, pero sucede que estoy creando un userform con combobox creado desde el editor de visual basic, y al insertarle un conbobox al userform no encuentro nuinguna propiedad para hacer que el combobox me muestre un rango de la hoja de excel
Agradezco tu coloboración.
OK mjgg ...
El código es el mismo ... lo que tienes que hacer es ponerlo en el evento Activate del UserForm :
Private Sub UserForm_Activate()
For fila = 2 To 20
ComboBox1.AddItem Range("A" & fila).Value
Next fila
ComboBox1.ListIndex = 0
End Sub
Para entrar a los eventos doble_click sobre el UserForm y en el combo a la derecha buscas Activate ...
Espero que ahora si ... :)
Suerte !
Rogers R.
Respuesta
1
Una vez insertado el combo box, dale al botón derecho sobre el y selecciona la pestaña propiedades.
Entonces encontrarás un propiedad en la ventana que aparece. La propiedad es ListFillRange.
Si en la propiedad le pones un rango (ej. C2:C25) te incluirá todas las celdas de ese rango
Te agradezco mucho por tu respuesta.
Pero lo que sucede es que estoy creando un formulario con combobox en un userform desde el editor de visual y acá no aparece esta propiedad.
Podrías ayudarme con esto gracias.
Lo que haces es programar en lo que se llama Visual Basic For Aplications. (Lo digo para que si preguntas, nos sea más fácil orientar la respuesta.)
En funcionamiento de los objetos es el mismo que en VB6.0.
Para recorrerte un rango de celdas desde cualquier modulo o hoja de excel, haz un bucle de este estilo :
dim ArrayValoresCeldas() as string
For a = RangoInicialVertical to RangoFinalVertical
For b = RangoInicialHorizontal to RangoFInalHorizontal
if a=RangoInicialVertical and b=RangoInicialHorizontal then
redim preserve ArrayValoresCeldas(0 to 0)
else
redim preserve ArrayValoresCeldas(0 to Ubound(ArrayValoresCeldas)+1)
end if
ArrayValoresCeldas(Ubound(ArrayValoresCeldas))=me.Cells(a,b)
next
next
Una vez rellenado dicho array
Para rellenar un combo con dichos datos, solo tienes mandar el array al formulario por parámetro y que recorrerte el array de este modo :
for Indice=lbound(ArrayValoresCeldas) to Ubound(ArrayValoresCeldas)
ComboBox1.AddItem ArrayValoresCeldas(indice), Indice
next
(El código lo acabo de improvisar como ejemplo, si quieres algo más orientado a abjetos pídemelo y te lo remito)
Respuesta
1
Bien en mi ejemplo uso una hoja de excel con un formulario con su combobox y el un comandbuton que al ser pulsado es el que rellena el combobox tu ubícalo donde desees que se realice el relleno Sal2
Private Sub CommandButton1_Click()
Dim iFila As Integer
Dim iColumna As Integer
'imaginemos que queremos rellenar el combo con los datos _
Contenidos en la columna 1 y hasta la fila 4
For iColumna = 1 To 1 'Desde 1 hasta 1
For iFila = 1 To 4 'Desde 1 hasta 4 ¿lo cojes?
ComboBox1.AddItem Hoja1.Cells(iFila, iColumna)
Next iFila
Next iColumna
End Sub
Hola wolfverine:
Te agradezco mucho por la respuesta, pero sucede que estoy creando un userform con combobox creado desde el editor de visual basic, y al insertarle un conbobox al userform no encuentro nuinguna propiedad para hacer que el combobox me muestre un rango de la hoja de excel.
Esta rutina seria muy buena si los combobox estuvieran en la hoja de calculo pero desde el userform no logro que me funcione
Agradezco tu coloboración.
El ejemplo que te envío es válido para el uso desde un userform de todas maneras dame una dirección de e-mail y te envío el ejemplo practico o si lo prefieres enviame tu hoja de excel a [email protected] y te lo implemento Saludos
Respuesta
1
Tienes que hacer un bucle
en el load del form.
combo1.clear
for x = 1 to 100
combo1.additem activesheet.range("a" & x)
next

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas