Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

vba2003: listbox-determinare limiti colonne/righe

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

vba2003: listbox-determinare limiti colonne/righe

Postdi karug64 » 24/12/11 14:10

Salve a tutti.
Poiche'' il foglio che vado a caricare non ha dimensioni fisse, e devo caricare escudendio la prima riga, "mi metto al sicuro" scrivendo ListBox1.RowSource = "Bf0109!A2:CC2000". Cosi', pero', carico tantissime righe bianche ed appensatisco la gestione del controllo.

Allora ho scritto questa routine

Sheets("BF").Select
righe109 = Sheets("BF").Cells(Rows.Count, "A").End(xlUp).Row
col109 = Range("A2").CurrentRegion.Columns.Address

indirizzo = ""
duepunti = InStr(col109, ":")
col109b = Mid(col109, duepunti + 1, (Len(col109) - duepunti))
For X = 1 To Len(Trim(col109b))
If Mid(col109b, duepunti + X, 1) <> "$" Then
indirizzo = indirizzo + Mid(col109b, X, 1)
End If
Next

indirizzo = "A2:" & indirizzo
ListBox1.RowSource = "BF!" & indirizzo

La routine funziona, ma per poter imparare qualcosa di nuovo, non e' che c'e' un modo piu' immediato con istruzioni proprie di vba per avere lo stesso risultato in maniera "piu' elegante" ?

Grazie
Office 2010
karug64
Utente Senior
 
Post: 580
Iscritto il: 20/11/11 21:22

Sponsor
 

Re: vba2003: listbox-determinare limiti colonne/righe

Postdi Anthony47 » 25/12/11 01:19

Io avrei usato UsedRange, ad esempio questo codice ti consente di impostare il nome foglio, un' eventuale area con cui "mascherare" l' area del foglio di lavoro (vedi significato del Metodo Intersect), applicare il RowSource al listbox1:
Codice: Seleziona tutto
MySht = "Foglio3"  'Nome del foglio
Set myMask = Sheets(MySht).Range("B2:D10000") '<< Opzionale, per impostare un' area limite
Sheets(MySht).UsedRange   'Ricalcola UsedRange
UserForm1.ListBox1.RowSource = MySht & "!" & Application.Intersect(Sheets(MySht).UsedRange, myMask).Address

Ma siccome in passato UsedRange ti ha dato delle delusioni, allora puoi rimanere nella falsariga di quanto hai impostato:
Codice: Seleziona tutto
mySht = "BF"   'Il foglio di lavoro
TLCell = "A2"  'Cella Top-Left dell' area
Sheets(mySht).Select
righe109 = Cells(Rows.Count, "A").End(xlUp).Row
col109 = Range(TLCell).CurrentRegion.Columns.Count   'Uso di Count
UserForm1.ListBox1.RowSource = mySht & "!" & Range(Range(TLCell), Cells(righe109, col109)).Address

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13895
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "vba2003: listbox-determinare limiti colonne/righe":


Chi c’è in linea

Visitano il forum: jos235, papiriof e 17 ospiti