|
Domanda.
nome=Gabriele
cognome=Alfieri
versione=MS Excel 2000
conosco3=buono
vba=SI
macro=SI
email=gabroa@libero.it
chr=211
problema=Gentile Ennius, Il mio problema è il seguente:
dovo cercare dei dati in un archivio tramite una TextBox in una UserForm e
fin qui non ci sono problemi.
Vorrei però che i dati trovati finissero in una casella di riepilogo ma il
problema è che sono 3 colonne e non voglio scrivere prima il foglio e poi
ricopiare i dati nella ListBox, Gli Array che devo utilizzare devono essere
dinamici ma non riesco a dichiararli (Io ho provato facendo Dim MyArray() ma
non funziona; il sistema funziona se dichiaro un Array del tipo Dim MyArray(10,3)
ma non va bene perchè deve essere dinamico.
Spero di averle illustrato bene il mio problema e la ringrazio per l'aiuto
che mi ha fornito con il materiale presente sul suo sito, spero mi possa
anche aiutare con il mio problema,
Saluti
Gabriele
Risposta.
ciao Gabriele, io quando ho degli elenchi variabili (dinamici) non uso array.
Ti invio questa routine che funziona. Si basa, data una cella iniziale dove
comincia l'elenco, sulla proprietà END per
reperire l'ultima colonna occupata e l'ultima riga per ogni colonna
occupata, e poi con un doppio ciclo for next faccio leggere i dati colonna
per colonna e caricare la lista con additem. conoscendo invece il numero di
colonne e di righe puoi evitare di usare end e fornire al ciclo i valori
estremi su cui operare. questa è la routine, nell'esempio uso la cella A1
come cella iniziale:
Sub CaricaLista()
Set zonac = Range(Cells(1, 1), Cells(1, 1).End(xlToRight))
'con zonac prendo quante colonne a destra di A1 sono
'occupate a1 compresa
x = zonac.Columns.Count 'con x ottengo il
numero delle colonne
ActiveSheet.ListBox1.Clear 'pulisco per prima
la listbox (l'ho provata su un foglio, non su userform, ma è lo stesso)
For z = 1 To x 'inizializzo il ciclo per
scorrere le colonne: dalla 1 al valore rappresentato da x
Set zonar = Range(Cells(1, z), Cells(1, z).End(xlDown))
'ora per ogni colonna, cerco da quante righe occupate è 'composto l'elenco
y = zonar.Rows.Count 'poi conto quante righe
sono occupate e le memorizzo con y
For t = 1 To y 'indi inizio il secondo ciclo
interno per scorrere le righe assegnando a t il numero di riga
w = Cells(t, z).Value 'quindi assegno a w il
valore che sarà nella cella t, z
ActiveSheet.ListBox1.AddItem w 'carico la
listbox con il valore rappresentato da w
Next 'continuo fine alla fine delle righe della
prima colonna
Next 'passo alla colonna successiva ripetendo
il ciclo sulle righe, fino alla fine delle colonne occupate
End Sub
Dovresti aver capito il concetto, ciao, fammi sapere, ennius
|