Discussione:
Proprietà SORTED di una listbox in VBA
(troppo vecchio per rispondere)
LupoNero
2005-10-06 17:57:26 UTC
Permalink
Ciao a tutti,
devo realizzare una macro in VBA contenente una listbox con tutti i dati in
ordine alfabetico.
Purtroppo in VBA manca l'utilissima proprietà SORTED!!!

Voi come fate?
Ho cercato tra i vecchi post ma non ho trovato nulla che risolve il
problema.
Se volessi ordinare in ordine alfabetico il file di testo dove sono
memorizzati i dati della listbox, uno per ogni riga... cosa mi consigliate?

Scusate se le domande sono banali ma sono alle prime armi. Cercate di
capirmi...

Ringrazio.
LupoNero
Alessandro Baraldi
2005-10-06 19:15:01 UTC
Permalink
Post by LupoNero
Ciao a tutti,
devo realizzare una macro in VBA contenente una listbox con tutti i dati in
ordine alfabetico.
Purtroppo in VBA manca l'utilissima proprietà SORTED!!!
Voi come fate?
Ho cercato tra i vecchi post ma non ho trovato nulla che risolve il
problema.
Se volessi ordinare in ordine alfabetico il file di testo dove sono
memorizzati i dati della listbox, uno per ogni riga... cosa mi consigliate?
Scusate se le domande sono banali ma sono alle prime armi. Cercate di
capirmi...
Ringrazio.
LupoNero
Credo sia un pò OT questo post, peraltro non dici nemmeno
a cosa si riferisce il VBA(Word/Access/Excel...).

Ipotizzando Access immagino che il tuo controllo ListBox
abbia come ControlSource una stringa SQL.

La leggi ed aggiungi "ORDER BY [NomeCampo] DESC" se la vuoi
decrescente, rimuovi la "DESC" dopo [NomeCampo] se la vuoi crescente.

Se le cose non stanno così vedi di essere più esplicito.

@Alex
--
Posted via Mailgate.ORG Server - http://www.Mailgate.ORG
LupoNero
2005-10-07 13:12:36 UTC
Permalink
Post by Alessandro Baraldi
Credo sia un pò OT questo post, peraltro non dici nemmeno
a cosa si riferisce il VBA(Word/Access/Excel...).
Il VBA è OT in questo NG? e dove dovrei scrivere i quesiti di VBA? Se
utilizzo i NG delle specifiche applicazioni trovo pochissima gente esperta
di Visual Basic... C'è qualche altro NG più adeguato?
Scusatemi se sono OT ma non lo sapevo...
Post by Alessandro Baraldi
Ipotizzando Access immagino che il tuo controllo ListBox
abbia come ControlSource una stringa SQL.
Non è access, ma AutoCAD... il problema comunque non cambia...non faccio
riferimento ad un database, ma dei file di testo TXT.
Post by Alessandro Baraldi
La leggi ed aggiungi "ORDER BY [NomeCampo] DESC" se la vuoi
decrescente, rimuovi la "DESC" dopo [NomeCampo] se la vuoi crescente.
Se le cose non stanno così vedi di essere più esplicito.
Spero di essere stato più chiaro, adesso.

P.S Se volessi ordinare in ordine alfabetico il file di testo dove sono
memorizzati i dati della listbox, uno per ogni riga... cosa mi consigliate?

Grazie
LupoNero
andrea palazzi
2005-10-07 17:01:26 UTC
Permalink
Post by LupoNero
Il VBA è OT in questo NG? e dove dovrei scrivere i quesiti di VBA? Se
utilizzo i NG delle specifiche applicazioni trovo pochissima gente esperta
di Visual Basic... C'è qualche altro NG più adeguato?
per i programmi di office, in linea di massima ci sono (e probabilmente sono
piu' efficienti) i relativi gruppi.
se usi autocad, non so se c'e' un gruppo, suppongo di si', e non so se
tratta il vba di autocad. comunque mi sembra di ricordare dal manifesto del
ng che vba qui sia ammesso.
Post by LupoNero
P.S Se volessi ordinare in ordine alfabetico il file di testo dove sono
memorizzati i dati della listbox, uno per ogni riga... cosa mi
consigliate?

ipotesi. lo carichi con line input in un array, ordini la matrice con cose
tipo quicksort, e riempi il listbox con l'array ordinato.

ciao, a.
LupoNero
2005-10-08 06:26:57 UTC
Permalink
Ti ringrazio,
ti prometto che prossimamente proverò a scrivere i quesiti di VBA sul NG del
rispettivo software.
Post by andrea palazzi
ipotesi. lo carichi con line input in un array, ordini la matrice con cose
tipo quicksort, e riempi il listbox con l'array ordinato.
Vista la mia totale inesperienza con gli "array" potresti darmi qualche
dritta?
del tipo ho le seguenti stringhe

stringa1 = "prova3"
stringa2 = "prova1"
stringa3 = "prova2"

come faccio a caricarle in un array e quindi ordinarlo per poi popolare la
ListBox?

Spero in un tuo aiuto, sperando di non approfittarne troppo.
Ciao
LupoNero
andrea palazzi
2005-10-08 13:17:19 UTC
Permalink
Post by LupoNero
Ti ringrazio,
ti prometto che prossimamente proverò a scrivere i quesiti di VBA sul NG del
rispettivo software.
Post by andrea palazzi
ipotesi. lo carichi con line input in un array, ordini la matrice con cose
tipo quicksort, e riempi il listbox con l'array ordinato.
Vista la mia totale inesperienza con gli "array" potresti darmi qualche
dritta?
del tipo ho le seguenti stringhe
stringa1 = "prova3"
stringa2 = "prova1"
stringa3 = "prova2"
come faccio a caricarle in un array e quindi ordinarlo per poi popolare la
ListBox?
Spero in un tuo aiuto, sperando di non approfittarne troppo.
Ciao
LupoNero
non approfitti, da tempo i lupi mi stanno simpatici :)

solo, sono di corsa (eventualmente ci risentiamo lunedi') quindi per gli
array devo farla semplice

dim s() as string
nel ciclo di lettura del file, usi un contatore per tenere nota delle linee
lette, e a ogni line input usi
redim preserve s
in base al contatore

guarda nella guida open [for input], line input (lettura file) dim, redim
preserve (array).

per l'ordinamento, da qualche parte devo avere un algoritmo di quicksort,
intanto prova qui:
http://tinyurl.com/cyfek
e ricerche simili

alla fine, se s() e' l'array ordinato, fai tipo:

dim j as long
for j = lbound(s) to ubound(s)
listbox.additem s(j)
next

piu' lungo a dirsi che a farsi, se guardi un po' di esempi.

magari qualcuno piu' bravo ti posta codice migliore

fa' sapere
ciao, a.

Loading...