añadir y ordenar un combobox estando Runtime

Solo consultas sobre macros y código VBA Excel.

Reglas del Foro
1. Antes de hacer tu pregunta intenta con el buscador de este foro (muchas preguntas ya fueron respondidas antes!)
2. Si haces una nueva pregunta, es muy recomendable que adjuntes el ejemplo Excel para poder comprenderla mejor!
3. Realiza tu pregunta de forma clara, explicando bien cada paso de lo que haces y tendrás más probabilidad de respuesta!
Compartir en:
     

aí±adir y ordenar un combobox estando Runtime

Notapor mgcarbajal » 25 Jul 2006 18:10

Hola que tal
LLeno mi combobox al iniciar el userform y toma los valores de una columna de una hoja especifica y voy descartando al mismo tiempo los elementos duplicados.(estoy manejando en todos los casos texto).

Una vez que tengo la lista quiero ordenarla en forma ascendente o desendente.

Y si doy la opcion de añadir un elemento nuevo que este se visualice en tiempo real en el combo y que aparezca en la posicion donde debe de quedar de acuerdo al orden.

estuve revisando los temas anteriores pero en realidad no encontrada nada aun y no se como hacer, se me ocurre pasar los item del combo a un array ,ordenar y luego volver a cargar combo pero no se como usar arreglos.

Podrí­a alguien sugerirme algo

Gracias de antemano
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
mgcarbajal
Miembro Frecuente
Miembro Frecuente
 
Registrado: 17 Mar 2006 16:41
Ubicación: México

Notapor cubaezb » 26 Jul 2006 10:52

Buen dí­a
Creo que esto es lo que estás buscando. Solo ajústalo un poco
Código: Seleccionar todo
 Private Sub UserForm_Activate()
ThisWorkbook.Sheets(1).Activate
Label2.Visible = True
TextBox2.Visible = True
ComboBox1.Clear
Dim rango()
ultima_fila = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
ReDim rango(ultima_fila)
For i = 2 To ultima_fila
    If Range(Cells(i, 1), Cells(i, 1)).Text Like ("/--*") Then
    'Opción 1: Almacenar en el rango
    rango(i - 1) = Range(Cells(i, 1), Cells(i, 1)).Text
    'Opción 2: Añadir inmediatamente en el combobox
        'ComboBox1.AddItem Range(Cells(i, 1), Cells(i, 1)).Text
    Else
    Exit For
    End If
'Debug.Print rango(i - 1)
Next i
'Con esta cargas todo el arreglo si escoges la opción 1
ComboBox1.List() = rango()
End Sub


Hasta Luego
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
cubaezb
Miembro Frecuente
Miembro Frecuente
 
Registrado: 30 Nov 2005 19:46
Ubicación: Bogota, Colombia

Re: aí±adir y ordenar un combobox estando Runtime

Notapor Adrian » 26 Jul 2006 12:08

Una alternativa es ordenar la lista si esta en una hoja, si por ejemplo sabemos que la lista que carga el controlesta en A1:A12, ordenamos allí­:

Range("A1:A12").Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal


Me.ComboBox1.RowSource = "a1:a12"

despues actualizamos el control.

Atte.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Adrian
Moderator
Moderator
 
Registrado: 13 Jun 2004 17:24
Ubicación: Chamical La Rioja ARG

Re: aí±adir y ordenar un combobox estando Runtime

Notapor mgcarbajal » 26 Jul 2006 12:42

Gracias por el código cubaezb pero no entiendo en que parte se ordenan los datos que se agregan al rango, podrias ayudarme a entender tu proceso.



Gracias Adrian por la sugerencia el problema es que no puedo ordenar los datos en mi hoja porque esta acompañado de varias columnas más que se utilizan en otras macros y esa informacion asi como la proporcionan tengo que procesarla.

Lo que hago primero es ir poniendo directamente en el combobox el valor que encuentra primero y no agrega los que son iguales , busca todos los valores diferentes en una lista de 1500 renglones ... quedando mas o menos 30 opciones en mi combo.

Por eso quiero encontrar una forma de ordenarlos despues de encontrar todos las opciones.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
mgcarbajal
Miembro Frecuente
Miembro Frecuente
 
Registrado: 17 Mar 2006 16:41
Ubicación: México

Notapor cubaezb » 26 Jul 2006 13:06

Sólo te dije cómo usar un arreglo para cargar un combobox pero si quieres podrí­as publicar el código con el que buscas los valores diferentes y te digo que cambios hay que hacerle para que el combo quede ordenado.

Hasta Luego
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
cubaezb
Miembro Frecuente
Miembro Frecuente
 
Registrado: 30 Nov 2005 19:46
Ubicación: Bogota, Colombia

Re: aí±adir y ordenar un combobox estando Runtime

Notapor mgcarbajal » 26 Jul 2006 13:30

Parte del código que utilizo
For Each z In Lrange

For j = 0 To CBxdepto.ListCount - 1
If z.Value = CBxdepto.List(j) Then Exit For
Next j

If j = CBxdepto.ListCount Then CBxdepto.AddItem z.Value

Next z
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
mgcarbajal
Miembro Frecuente
Miembro Frecuente
 
Registrado: 17 Mar 2006 16:41
Ubicación: México


Compartir en:
     

  • Anuncio
Manual Excel avanzado

Volver a Macros

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 8 invitados