Excel e gli applicativi Microsoft Office Selezione ultime celle colonne

Login Registrati
Stai vedendo 7 articoli - dal 1 a 7 (di 7 totali)
  • Autore
    Articoli
  • #10770 Score: 0 | Risposta

    thunder
    Partecipante

      Ciao,

      vorrei poter selezionare le ultime celle attive di tre colonne( in questo caso "A", "B" e "C". Le celle sono sempre contigue.

      Ho trovato questo codice ma mi permette di selezionare solo l'ultima cella di una colonna alla volta

      ActiveSheet.Range("a1").End(xlDown).Select
      #10771 Score: 1 | Risposta

      vecchio frac
      Senior Moderator
        272 pts

        L'istruzione che hai mostrato infatti è equivalente a:

        - posizionati sulla cella A1 del foglio corrente,

        -  premei (virtualmente) il tasto End sulla tastiera,

        - premi quindi il tasto freccia giù.

        Per selezionare un range di celle devi impostare un riferimento a un range di celle; ci sono diverse soluzioni, una semplice è:

        - calcolare l'ultima riga del range

        - impostare (o selezionare) un range composto, in cui la prima cella ha posizione (A, ultima riga)  e l'ultima cella ha posizione (C, ultima riga)

        #10777 Score: 0 | Risposta

        thunder
        Partecipante

          Ciao!

          Dunque ho provato per step selezionando il Range di partenza

          Dim Pippo As String
          Pippo = Range("A1:C1").Select
          

          Ho provato poi a selezionare il le ultime celle del range ma da errore:

          Dim Pippo As String
          Pippo = Range("A1:B1")
          Range("Pippo").End(xlDown).Select

          Dove sbaglio?

          #10778 Score: 0 | Risposta

          vecchio frac
          Senior Moderator
            272 pts

            L'errore nel primo esempio è che tu associ a una variabile di tipo stringa l'operazione di selezione di un range. Poichè selezionare un range è un'operazione che ha generalmente successo, il risultato dell'operazione è "True" che viene assegnato alla variabile pippo, e quindi convertito in testo. Tanto vero che il VarType di pippo dopo l'assegnazione è 8 cioè vbString.

            Nel secondo esempio tenti invece di assegnare a una variabile di tipo stringa un range di più celle, ma subito scatta l'errore di tipo non corrispondente perchè un range è solitamente un oggetto e l'assegnazione degli oggetti si fa con la sintassi "Set var = object", nel tuo caso avrebbe dovuto essere quindi:

            Dim pippo as Range
            Set pippo = Range("A1:B1")

            Ora però pippo non è un "nome definito" nel foglio, ma una variabile di tipo range che punta alle due celle indicate. Quindi anche l'istruzione successiva genera errore. Dovrebbe essere semplicemente:

            pippo.End(xlDown).select

            Ti invito a pensare così: devo partire dalla prima cella del range in colonna A, spostarmi all'ultima cella piena di tale colonna, salvare il valore della riga cui sono arrivato, quindi costruire un range composto da tre celle, in cui la lettera (la colonna) va da A a C e il valore della riga è invece già salvato. Quando ho costruito un range siffatto, lo posso "select-ionare" (scusa il neologismo).

            #10780 Score: 0 | Risposta

            Oscar
            Partecipante
              45 pts

              Prova così

              W = Cells(Rows.Count, 1).End(xlUp).Row
              Range("a" & W, "c" & W).Select
              #10786 Score: 0 | Risposta

              thunder
              Partecipante

                Ciao

                risolto così:

                ActiveSheet.Range("a1").End(xlDown).Select
                ActiveSheet.Range(ActiveCell, ActiveCell.Offset(0, 3)).Select

                ho trovato l'ultima cella e da li ho creato una selezione con l'intervallo delle tre colonne!

                 

                #10787 Score: 0 | Risposta

                vecchio frac
                Senior Moderator
                  272 pts

                  Ottimo!   

                  Ci sono altri modi, come anche poco fa ti è stato illustrato.

                  Tendenzialmente è preferibile non selezionare la cella direttamente ma lavorare con le variabili (spostare il cursore non è quasi mai necessario anche perchè ciò rallenta l'esecuzione e a volte produce effetti collaterali).

                  Comunque sono contento del tuo risultato 🙂

                Login Registrati
                Stai vedendo 7 articoli - dal 1 a 7 (di 7 totali)
                Rispondi a: Selezione ultime celle colonne
                Gli allegati sono permessi solo ad utenti REGISTRATI
                Le tue informazioni: