Página 2 de 2 PrimerPrimer 12
Resultados 11 al 20 de 20

Tema: ListBox y VBA(excel)

  1. #11

    Predeterminado Re: ListBox y VBA(excel)

    Cita Iniciado por S-Svirus
    Nop, pero no entiendo bien.
    Tienes razón serpico, solo se declararía como entero la primera.

    En fin, lo que dije unos cuantos posts arriba, y por dos veces...
    i = 0
    For j = 0 To lstCodigo.ListCount - 1 - i

    Y al final:
    lstCodigo.List(j, 0) = lstCodigo.List(j + 1, 0)
    O sea que se accede al elemento j+1, es decir ListCount, que no existe en la colección...


    Definiendo i como 1, no te sales del rango.
    Quizás si hubieras preguntado...
    Luego j va hasta lstCodigo.ListCount -

  2. #12
    Vive aquí Avatar de S-Svirus
    Ubicación
    Vélez-Málaga
    Edad
    31
    Mensajes
    582

    Predeterminado Re: ListBox y VBA(excel)

    Efectivamente eso es lo que comentaba en mi anterior post, con eso ya ordena perfectamente.

    De lo otro que pregunté saben algo?
    ATHLON XP 2600+ Asus A7N8X DELUXE 512 MB DC RAM 200 GB ATI RADEON 128 MB
    Acer Aspire
    1694WMLI2 Sonoma 2.0 Ghz 100 GB 5400rpm 1 GB DDR2 X700 128 MB 15.4" CristalBrite

    --> Lo que no te mata, te hace más fuerte <--



  3. #13
    Vive aquí Avatar de S-Svirus
    Ubicación
    Vélez-Málaga
    Edad
    31
    Mensajes
    582

    Predeterminado Re: ListBox y VBA(excel)

    Alguien sabría decirme como añadir datos a un ListBox de 3 columnas??, lo que quiero es que en la primera columna valla un dato, en la segunda otro y en la tercera otro, pero todo quede ordenado dependiendo de la primera, he intentado probar las propiedades de columnas en los ListBox de VBA para Excel pero no doy con la solución.
    ATHLON XP 2600+ Asus A7N8X DELUXE 512 MB DC RAM 200 GB ATI RADEON 128 MB
    Acer Aspire
    1694WMLI2 Sonoma 2.0 Ghz 100 GB 5400rpm 1 GB DDR2 X700 128 MB 15.4" CristalBrite

    --> Lo que no te mata, te hace más fuerte <--



  4. #14
    Sin vida social
    Ubicación
    Las Palmas
    Edad
    44
    Mensajes
    305

    Predeterminado Re: ListBox y VBA(excel)

    Yo lo he hecho múltiples veces en Access (VBA); supongo que será igual para Exce. Es bastante sencillo, te explico:

    En el ListBox hay varias propiedades muy útiles para tu propósito:

    - "Número de columnas" indica el número de columnas que tendrá.
    - "Encabezados de columna" = Si, te pone los nombres. "No", no te pone encabezados.
    - "Ancho de columnas", separados por punto y coma (";") la distancia en cetímetros. Por ejemplo "0 cm; 10 cm" (el cero indica que esa columna NO la verá el usuario, aunque tú sí puedes acceder a ella mediante código.

    Así, si quieres una lista con 3 columnas: C1, C2, C3

    Número de columnas = 3;
    Encabezados = Si/No (según prefieras)
    Ancho de columnas = "2 cm; 8 cm; 12 cm" por poner algo

    Hasta aquí creo que lo sabías.
    ¿Cómo llenarla de datos? Hay dos formas: mediante consulta SQL y añadiendo valores. Con SQL es mucho más sencillo.
    Hay dos propiedades más:
    "Tipo de origen de la fila" y "Origen de la fila".
    En Access, es sumamente sencillo llenarlo de datos. Así:
    - Tipo... = Tabla/Consulta
    - Origen... = "SELECT id, nombre FROM MiTabla ORDER BY nombre;
    En tiempo de diseño esto generaría la lista en perfectas condiciones, ordenados los campos como quieras.

    En tiempo de ejecución, si la variable sSQL contiene una consulta:
    lstLista.RowSource = sSQL 'sentencia SQL a ejecutar
    lstLista.Requery 'recupera los registros
    Hace lo mismo...

    Ahora bien, como supongo que estás en Excel y no tienes los datos en una BD, con lo cual eso de meterlo en sentencias SQL no te vale.
    - Tipo... = Lista de Valores
    - Origen... = Los valores separados, creo recordar, por comas.

    Ordenarlos lo tendrás que hacer mediante algún algoritmo de ordenación y luego volverlos a insertar, a no ser que el ListBox incorpore algún método para tal menester. Mediante una tabla se sumamente sencillo, pues la sentencia SQL te deja los datos tal y como tú quieres.

    Espero que te sirva.
    Saludos.
    Soy un manazas... lo llevo en la sangre.

  5. #15
    Vive aquí Avatar de S-Svirus
    Ubicación
    Vélez-Málaga
    Edad
    31
    Mensajes
    582

    Predeterminado Re: ListBox y VBA(excel)

    Efectivamente el tema de las propiedades lo sabía, el algorítmo lo tengo lo que no se es si puedo ordenar todo el ListBox segun el criterio que desee en una única columna, es decir, ordenar todo el ListBox por orden alfabético de los nombres de clientes (que están en la 2ª columna).

    Con SQL si controlo el tema el problema me viene, como tu bien dices, al estar en Excell y no usar BD para almacenar la Info, sino las mismas hojas del libro.

    No entiendo muy bien lo de Tipo y tal, pero practicaré a ver si saco algo en claro, te agradecería un ejemplo de código de como agregar los valores en la columna correspondiente.

    Muchas gracias por la colaboración.
    ATHLON XP 2600+ Asus A7N8X DELUXE 512 MB DC RAM 200 GB ATI RADEON 128 MB
    Acer Aspire
    1694WMLI2 Sonoma 2.0 Ghz 100 GB 5400rpm 1 GB DDR2 X700 128 MB 15.4" CristalBrite

    --> Lo que no te mata, te hace más fuerte <--



  6. #16
    Vive aquí Avatar de S-Svirus
    Ubicación
    Vélez-Málaga
    Edad
    31
    Mensajes
    582

    Predeterminado Re: ListBox y VBA(excel)

    Resulto cansino lo se espero que no os moleste tanta pregunta.

    Mirad, conseguí llenar el ListBox con dos columnas usando la propiedad rowsource sin ningún problema pero al llegar al algoritmo de ordenación ese que puse antes, me da un error al hacer los cambios de valores de la lista para realizar dicha ordenación, es rarísimo, al menos a mi me lo parece.
    Sin embargo, en cuanto quito el rowsource todo funciona ok, carga y ordena, al volverlo a poner, falla de nuevo, el caso es que el primer valor si me lo guarda en la variable auxiliar que uso en la ordenación, pero al intentar machacar el valor del elemento que corresponde ordenar falla.

    El error es el error 70 por si os sirve de algo, yo seguiré intentando a ver si encuentro algo, pero no veo nada que pueda provocar este error.
    ATHLON XP 2600+ Asus A7N8X DELUXE 512 MB DC RAM 200 GB ATI RADEON 128 MB
    Acer Aspire
    1694WMLI2 Sonoma 2.0 Ghz 100 GB 5400rpm 1 GB DDR2 X700 128 MB 15.4" CristalBrite

    --> Lo que no te mata, te hace más fuerte <--



  7. #17
    Vive aquí Avatar de S-Svirus
    Ubicación
    Vélez-Málaga
    Edad
    31
    Mensajes
    582

    Predeterminado Re: ListBox y VBA(excel)

    Bueno, pues ya se llena el ListBox de dos columnas tal y como quería y se ordena, pero solo se ordena una columna, es posible hacer que ambas se ordenen a la vez?? una dependiendo de la otra???
    ATHLON XP 2600+ Asus A7N8X DELUXE 512 MB DC RAM 200 GB ATI RADEON 128 MB
    Acer Aspire
    1694WMLI2 Sonoma 2.0 Ghz 100 GB 5400rpm 1 GB DDR2 X700 128 MB 15.4" CristalBrite

    --> Lo que no te mata, te hace más fuerte <--



  8. #18
    Sin vida social
    Ubicación
    Las Palmas
    Edad
    44
    Mensajes
    305

    Predeterminado Re: ListBox y VBA(excel)

    El código que tengo de uno de mis proyectos, que funciona estupendamente, es este (retocado y simplificado, claro):

    'Actualizamos la lista de actividades (lstActividades)
    Dim sTitulo As String
    Dim s As String
    sTitulo = "Actividades del grupo " & iGrupoActividadSeleccionado & ": " & sNombreGrupoActividadSeleccionado
    s = "SELECT TActividades.idActividad, TActividades.idGrupo, TActividades.nombre_actividad FROM TActividades WHERE TActividades.idGrupo=" _
    & iGrupoActividadSeleccionado & " ORDER BY TActividades.nombre_actividad"

    lstActividades.RowSource = sSQL 'sentencia SQL a ejecutar
    lstActividades.Requery 'recupera los registros
    --------------

    Pero esto tirando de una base de datos.
    De todas formas, no entiendo muy bien: ¿cómo vas a ordenar un Listbox de 2 columnas por ambas columnas. O es por una o es por otra, pero ambas a la vez no es coherente.
    Saludos.
    Soy un manazas... lo llevo en la sangre.

  9. #19
    Vive aquí Avatar de S-Svirus
    Ubicación
    Vélez-Málaga
    Edad
    31
    Mensajes
    582

    Predeterminado Re: ListBox y VBA(excel)

    Tu ejemplo no me vale al ser desde una BD.
    Yo me refería a hacer la ordenación de todo el ListBox por una única columna, lo que pasa que cuando la ordeno, la otra no se actualiza.
    De todos modos tengo una idea y esper probarla esta tarde, ya os comentaré que tal ha salido.
    ATHLON XP 2600+ Asus A7N8X DELUXE 512 MB DC RAM 200 GB ATI RADEON 128 MB
    Acer Aspire
    1694WMLI2 Sonoma 2.0 Ghz 100 GB 5400rpm 1 GB DDR2 X700 128 MB 15.4" CristalBrite

    --> Lo que no te mata, te hace más fuerte <--



  10. #20
    Sin vida social
    Ubicación
    Las Palmas
    Edad
    44
    Mensajes
    305

    Predeterminado Re: ListBox y VBA(excel)

    Para ello, entonces, utiliza una matriz. Algo así como (de memoria, así que el código puede que sintácticamente no sea correcto, pero la idea es clara):

    type usrMatriz
    id as integer
    nombre as string
    end type
    Dim v(20, 2) as usrMatriz

    - Mete los datos en esta estructura
    - Utiliza después un algoritmo de ordenación para que te los ordene como tú quieras.
    - Una vez ordenados, mételos en el ListBox y santas pascuas.
    Así lo haría yo. De hecho, así lo hago yo cuando es necesario en VB 6.0
    Saludos.
    Soy un manazas... lo llevo en la sangre.

Página 2 de 2 PrimerPrimer 12

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •