Risultati da 1 a 15 di 15

Discussione: Piccola lezione di "VBA Elastico"



  1. #1
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    Piccola lezione di "VBA Elastico"

    Mi sapete spiegare la differenza tra la seguente istruzione:


    prima) Ur = Range("D" & Rows.Count).End(xlUp).Row


    e questa:


    seconda) Ur = Worksheets("Foglio1").Range("D2").End(xlDown).Row + 1


    Nela seconda si vuole che partendo da D2 del Foglio1 si vada a prendere l'ultima cella della sua area muovendosi verso il basso.


    E nella prima istruzione ?

    Saluti.

  2. #2
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    72
    Messaggi
    1108
    Versione Office
    2010
    Likes ricevuti
    143
    Likes dati
    1

    Re: Piccola lezione di "VBA Elastico"

    riempi di dati il range A1:E10 e poi A15:E20 e controlla il risultato delle 2 righe di codice
    la seconda fa il contrario, parte da D2 e va in basso e si ferma appena trova una cella vuota che potrebbe non essere l'ultima

  3. #3
    L'avatar di zio_tom
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Veneto
    Messaggi
    526
    Versione Office
    2010 - Win10
    Likes ricevuti
    64
    Likes dati
    17

    Re: Piccola lezione di "VBA Elastico"

    mi inserisco con questa
    RowCount = Worksheets("Foglio1").Range("A1").CurrentRegion.Rows.Count

    non ho trovato help, qualcuno me la spiega, da come funziona dovrebbe essere grossolanament equivalente
    ma dettagliatamente come funzione, cosa fa?
    il CurrentRegion a cosa si riferisce?

  4. #4

    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    64
    Messaggi
    6795
    Versione Office
    2013
    Likes ricevuti
    718
    Likes dati
    164

    Re: Piccola lezione di "VBA Elastico"

    Ciao zio tom

    La CurrentRegion è la proprietà di un range che punta all'intervallo (rettangolare) costituito da tutte le celle (anche vuote) circondato da righe e colonne vuote.

    Quindi l'istruzione che hai riportato conta le righe della CurrentRegion della cella A1.

    Ad esempio se sono compilate le sole celle a1, d1, a10 e d10 la CurrentRegion di a1 sarà a1:d10 e l'istruzione restituirà appunto 10.

    Diversa è la proprietà UsedRange che fa riferimento all'oggetto Worksheet.

    Alfredo

    P.S. Sono da cell e non posso allegare esempi.

  5. #5
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    72
    Messaggi
    1108
    Versione Office
    2010
    Likes ricevuti
    143
    Likes dati
    1

    Re: Piccola lezione di "VBA Elastico"

    Ci sono moltissimi modi di trovare l'ultima riga o l'ultima colonna non vuota, il loro utilizzo dipende dall'impostazione del codice e dalla struttura del foglio, nei casi più semplici danno tutti lo stesso risultato.

  6. #6

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4016
    Versione Office
    2013
    Likes ricevuti
    1225
    Likes dati
    923

    Re: Piccola lezione di "VBA Elastico"

    Ciao a tutti,



    @ProgrammD69
    riprendo quanto hai detto oggi in un'altra discussione aperta da te:

    Sono giorni di festa. Il codice di questa discussione, come gli altri di altre discussioni, me li studierò con calma nel prossimo mese.
    Ci risentiamo a settembre.

    Saluti.
    Se sai già che non puoi rispondere per molto tempo a TUTTI coloro che cercano di aiutarti, evita di aprire tante discussioni, perchè comunque chi ti risponde mette a disposizione il suo tempo (gratuitamente) per risolvere un tuo problema, ed il minimo gesto da parte tua è quello di dare dei riscontri (positivi o negativi che siano).
    E' vero che nei forum non ci sono tempi immediati, ma dovrebbe esistere perlomeno rispetto e gratitudine.

    Ciao
    Tore

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  7. I seguenti utenti hanno dato un "Like"


  8. #7
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    Re: Piccola lezione di "VBA Elastico"

    Citazione Originariamente Scritto da cromagno Visualizza Messaggio
    Ciao a tutti,



    @ProgrammD69
    riprendo quanto hai detto oggi in un'altra discussione aperta da te:



    Se sai già che non puoi rispondere per molto tempo a TUTTI coloro che cercano di aiutarti, evita di aprire tante discussioni, perchè comunque chi ti risponde mette a disposizione il suo tempo (gratuitamente) per risolvere un tuo problema, ed il minimo gesto da parte tua è quello di dare dei riscontri (positivi o negativi che siano).
    E' vero che nei forum non ci sono tempi immediati, ma dovrebbe esistere perlomeno rispetto e gratitudine.

    Ciao
    Tore
    Solo un piccolo intervento.
    Ho aperto molte discussioni in questo mese, ma molte sono chiuse. (Purtroppo il RISOLTO non si può mettere). Per altre, (solo due) le possiamo sempre riprendere o riaprire dopo la pausa estiva.
    Ho sempre ringraziato per l'aiuto ricevuto, e spero di poter diventare un esperto di formule e VBA in modo da poter contraccambiare quando altri avranno bisogno di me.
    Buone ferie a tutti.

  9. #8
    L'avatar di ggratis
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Lecce - Pisa
    Età
    45
    Messaggi
    737
    Versione Office
    Excel 2010
    Likes ricevuti
    257
    Likes dati
    215

    Re: Piccola lezione di "VBA Elastico"

    Citazione Originariamente Scritto da ProgrammD69 Visualizza Messaggio
    Mi sapete spiegare la differenza tra la seguente istruzione:
    prima) Ur = Range("D" & Rows.Count).End(xlUp).Row
    Rows.count conta il numero di righe del foglio, quindi Range("D" & Rows.Count) corrisponde al posizionarsi su l'ultima cella della colonna D; .End(xlUp) corrisponde alla combinazione di tasti ctrl+freccia su e si piazza sulla prima cella piena che incontra .Row ti da il numero di riga corrispondente; +1 lo aggiungi per portarti sulla riga sotto la precedente.

    Citazione Originariamente Scritto da ProgrammD69 Visualizza Messaggio
    e questa:
    seconda) Ur = Worksheets("Foglio1").Range("D2").End(xlDown).Row + 1
    Nella seconda si vuole che partendo da D2 del Foglio1 si vada a prendere l'ultima cella della sua area muovendosi verso il basso.


    E nella prima istruzione ?

    Saluti.
    ----------Post unito in automatico----------

    Citazione Originariamente Scritto da zio_tom Visualizza Messaggio
    mi inserisco con questa
    RowCount = Worksheets("Foglio1").Range("A1").CurrentRegion.Rows.Count

    non ho trovato help, qualcuno me la spiega, da come funziona dovrebbe essere grossolanament equivalente
    ma dettagliatamente come funzione, cosa fa?
    il CurrentRegion a cosa si riferisce?
    per vedere a cosa si riferisce la CurrentRegion, selezionala...
    .Rows.Count conta le righe della selezione...

    Codice: 
    Sub prova()
    Worksheets("Foglio1").Range("A1").CurrentRegion.Select
    End Sub
    saluti
    gg

  10. #9

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1017
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0

    Re: Piccola lezione di "VBA Elastico"

    Citazione Originariamente Scritto da alfrimpa Visualizza Messaggio
    Ad esempio se sono compilate le sole celle a1, d1, a10 e d10 la CurrentRegion di a1 sarà a1:d10 e l'istruzione restituirà appunto 10.
    Ciao Alfredo,

    sei proprio sicuro di quanto hai scritto?
    Secondo me nell'esempio quotato la CurrentRegion di A1 è solo A1.
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  11. #10
    L'avatar di ggratis
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Lecce - Pisa
    Età
    45
    Messaggi
    737
    Versione Office
    Excel 2010
    Likes ricevuti
    257
    Likes dati
    215

    Re: Piccola lezione di "VBA Elastico"

    ...infatti è proprio così, per questo ho suggerito di selezionarla. [emoji12]

    Inviato dal mio GT-I9105P utilizzando Tapatalk

  12. #11
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    72
    Messaggi
    1108
    Versione Office
    2010
    Likes ricevuti
    143
    Likes dati
    1

    Re: Piccola lezione di "VBA Elastico"

    allego un esempio con qualche soluzione.
    Forse sarebbe il caso di modificare il titolo e renderlo più esplicativo
    File Allegati File Allegati

  13. #12

    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    64
    Messaggi
    6795
    Versione Office
    2013
    Likes ricevuti
    718
    Likes dati
    164

    Re: Piccola lezione di "VBA Elastico"

    Citazione Originariamente Scritto da scossa Visualizza Messaggio
    Ciao Alfredo,

    sei proprio sicuro di quanto hai scritto?
    Secondo me nell'esempio quotato la CurrentRegion di A1 è solo A1.
    Si perdonate ho sbagliato esempio (scrivevo dalla spiaggia e non ho potuto testare); la definizione ritengo sia corretta.

    Alfredo

  14. #13
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    72
    Messaggi
    1108
    Versione Office
    2010
    Likes ricevuti
    143
    Likes dati
    1

    Re: Piccola lezione di "VBA Elastico"

    questo rende meglio l'idea della current region
    File Allegati File Allegati

  15. #14
    L'avatar di ggratis
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Lecce - Pisa
    Età
    45
    Messaggi
    737
    Versione Office
    Excel 2010
    Likes ricevuti
    257
    Likes dati
    215

    Re: Piccola lezione di "VBA Elastico"

    Citazione Originariamente Scritto da patel Visualizza Messaggio
    questo rende meglio l'idea della current region
    ...piccola integrazione, la cella di riferimento iniziale può essere anche vuota, ma se tra le 8 che la circondano, c'è una cella piena, la selezione si estende comunque e continua ad estendersi finché lungo la frontiera della selezione rettangolare c'è una cella piena (mi riferisco al .CurrentRegion.Select); patel che saluto, nel suo file ha prodotto una casistica ben più completa.

    saluti
    gg

  16. #15

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7125
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2063
    Likes dati
    1298

    Re: Piccola lezione di "VBA Elastico"

    Alle ottime spiegazioni che mi hanno preceduto aggiungo che Range("A1").CurrentRegion corrisponde all'area di celle che hanno un "contatto" consequenziale con le righe o colonne in linea orizzontale, verticale o diagonale.

    Come spiegato da ggratis (che saluto) è indipendente che A1 sia vuota o piena.

    Nell'esempio sotto riportato:

    A1 confina con la cella B2
    B2 confina con C3
    C3 confina con A4 e D1
    A4 confina con B5
    B5 confina con D6
    D6 confina con E7
    E7 confina con B8 eF2
    F2 confina con G5
    G5 confina con H7

    Pertanto l'ultima colonna è H e l'ultima riga è 8

    L'area interessata è A1:H8

    Per allargare l'area di una riga in basso ci sarebbe dovuto essere presente un valore nel Range (A9:I9)
    Mentre per allargare l'area di una colonna verso destra ci sarebbe dovuto essere un valore nel Range (I1:I9)
    Dunque se il valore fosse stato presente nella cella I9 avrebbe allargato l'area di una riga sotto e una colonna a destra.

    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

Discussioni Simili

  1. [Risolto] Ordinare con la funzione "piccolo"..ma "portandosi dietro" anche altri dati affiancati
    Di mauri73 nel forum Domande su Excel in generale
    Risposte: 13
    Ultimo Messaggio: 05/02/17, 14:57
  2. [Risolto] Come leggere la seguente formula =SE.ERRORE(INDIRETTO("'"&A1&"'!K1";1);""))
    Di sitolofi nel forum Domande su Excel in generale
    Risposte: 5
    Ultimo Messaggio: 20/12/16, 14:54
  3. [Risolto] Codice non funzionante dopo il passaggio da "Windows" a "Mac"...
    Di joondeep nel forum Foglio di calcolo su altre Piattaforme
    Risposte: 13
    Ultimo Messaggio: 12/03/16, 21:09
  4. Collegamento "foglio elenco" e "fogli singoli"
    Di Maurizio76 nel forum Domande su Excel in generale
    Risposte: 7
    Ultimo Messaggio: 23/11/15, 10:14
  5. Piccola divagazione su "Anteprima suggerimenti"
    Di Baloon_50 nel forum Domande su Excel in generale
    Risposte: 1
    Ultimo Messaggio: 03/09/15, 02:13

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •