Condividi:        

VBA excel 2003: individuare ultima colonna piena

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

VBA excel 2003: individuare ultima colonna piena

Postdi karug64 » 04/12/11 16:55

Salve a tutti.
In uno dei fogli del mio file xls provvedo a caricare un tabulato (in formato txt), ma non so quante colonne andro' a riempire.
Il foglio composto e' variabile, nel senso che le prime 5 colonne (A:E) sono sempre avvalorate, poi per ogni riga, le colonne da F---> in poi possono contenere valori diversi oer ogni riga.
Quindi alla fine, potrei avere che la riga 1 si ferma alla colonna H, mentre la riga 2 si ferma alla colonna AD, la riga 100 alla colonna K e (sempre per esempio) la riga 1000 alla colonna BE.
C'e' un modo tramite vba di conoscere, dato un foglio, di individuare il numero dell'ultima colonna che contiene dei dati (nell'esempio sarebbe la colonna BE = 57) ?
Grazie
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Sponsor
 

Re: VBA excel 2003: individuare ultima colonna piena

Postdi Flash30005 » 04/12/11 18:46

Il codice che normalmente si usa è
Codice: Seleziona tutto
UC = Worksheets("Foglio1").Range("IV2").End(xlToLeft).Column

Ma conta le colonne in una determinata riga (in questo caso riga 2: IV2)
nel tuo caso, invece, dovresti usare questo codice
Codice: Seleziona tutto
Col = Range("A2").CurrentRegion.Columns.Count

L'importante è che tutte le righe (del tuo range) siano piene

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: VBA excel 2003: individuare ultima colonna piena

Postdi Anthony47 » 04/12/11 18:50

Oppure, in alternativa al codice di Flash (vedi sopra), prova queste due istruzioni, dovrebbero darti la colonna ultima usata nella variabile MaxUCol:
Codice: Seleziona tutto
ActiveSheet.UsedRange
MaxUCol = ActiveSheet.UsedRange.Columns.Count + ActiveSheet.UsedRange.Range("A1").Column - 1

Nel tuo caso dovrebbero essere equivalenti, visto che non hai righe o colonne intermedie vuote; con UsedRange dovresti lavorare anche con quel tipo di interruzioni.

Fai sapere, ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: VBA excel 2003: individuare ultima colonna piena

Postdi karug64 » 04/12/11 22:24

Innanzitutto grazie.
Allora, la soluzione di flash da il risultato giusto (l'ultimo valore si trova in colonna "X" e la risposta è 24 = Ok)
La soluzione di Anthony, invece, mi da come risultato 26 (non so perche').

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

Re: VBA excel 2003: individuare ultima colonna piena

Postdi Anthony47 » 05/12/11 00:59

Uso spesso quella sequenza (una istruzione dopo l' altra, cioe' contigue) per resettare lo UsedRange, il cui calcolo altrimenti terrebbe conto anche di celle non piu' usate; suggerito in un articolo Microsoft.
Finora non ho avuto la sensazione che mi fregasse, dopo la tua segnalazione staro' piu' in guardia.

Notare che le istruzioni date lavorano sull' activesheet; se il foglio attivo non e' quello da investigare e' necessario usare Sheets("FoglioX").UsedEtc

Ciao a tutti.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: VBA excel 2003: individuare ultima colonna piena

Postdi ricky53 » 05/12/11 01:08

Ciao a tutti,
ho fatto varie prove i valori che ottengo, con le due soluzioni, sono sempre uguali tra loro.

Karug: con "Ctrl+Fine" in quale cella ti si posiziona il cursore ?
Infine: puoi inviare un file di esempio (senza dati riservati) in cui è presente l'anomalia 24 e 26.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: VBA excel 2003: individuare ultima colonna piena

Postdi Anthony47 » 05/12/11 01:13

Ho modificato il mio messaggio probabilmente dopo che Ricky ha inserito il suo; ho aggiunto:
Notare che le istruzioni date lavorano sull' activesheet; se il foglio attivo non e' quello da investigare e' necessario usare Sheets("FoglioX").UsedEtc

Ciao a tutti
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: VBA excel 2003: individuare ultima colonna piena

Postdi karug64 » 05/12/11 23:24

Grazie a tutti.
Sono fuori per lavoro, non appena rientro faro' queste prove e postero' il risultato.
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Re: VBA excel 2003: individuare ultima colonna piena

Postdi karug64 » 08/12/11 17:21

Salve. rieccomi a casa. Ho fatto la prova: in effetti CTRL+FINE mi portano alla casella Z2356 (quindi =26).
Il foglio pero' contiene dati fino alla riga 1638 ed alla colonna X (quindi = 24)
L'unica spiegazione che riesco a darmi e' che, poiche' estraggo dati da un file di testo potrei avere delle "spurie" non visibili che possano inficiare il risultato.

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

Re: VBA excel 2003: individuare ultima colonna piena

Postdi ricky53 » 08/12/11 19:25

Ciao,
prova ad eliminare le righe dalla 1639 in avanti fino alla fine del foglio
salva
chiudi
riapri
prova di nuovo con Ctrl+Fine
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia


Torna a Applicazioni Office Windows


Topic correlati a "VBA excel 2003: individuare ultima colonna piena":


Chi c’è in linea

Visitano il forum: Nessuno e 31 ospiti