Excel: evidenziare una riga scorrendo con le frecce
Excel: scopriamo qual è il codice VBA per evidenziare la riga scorrendo su e giù con le frecce della tastiera
In questo tutorial volevo rispondere a questa domanda: “Potresti dirmi come posso fare a evidenziare la riga scorrendo su e giù con le frecce?”
Per arrivare a questo tipo di risultato dovremo utilizzare il codice Visual Basic, quindi andremo a descrivere una serie di righe di comando molto facili.
Vi ricordo che potete scaricare il file della lezione compilato cliccando sul bottone rosso.
N.B
Visto che parliamo di colori, ho anche posizionato una tabella con una serie di colori con i relativi codici che potrete utilizzare a vostro piacimento.
Mettiamoci subito al lavoro e andiamo a creare un nuovo file con dei dati in modo da avere qualche cosa su cui lavorare (anche se in realtà non non preclude assolutamente la buona riuscita dell’esercizio).
Possiamo cominciare con il descrivere la nostra macro (ovvero il nostro elenco di azioni) entrando nell’editor Visual Basic; prima di farlo però andrò a salvare il file dal menu file salva con nome, scegliendo come formato, cartella di lavoro con attivazione macro (altrimenti non funzionerà un bel niente). Ora possiamo dare la conferma e salvare.
Entriamo nel nostro editor Visual premendo Alt + F11 e da qui andiamo a scegliere dove dovrà lavorare la nostra azione (foglio 1, foglio 2, foglio 3 oppure nell’intera cartella di lavoro). Per effettuare la vostra scelta non dovete far altro che fare doppio clic sull’etichetta.
A questo indichiamo l’oggetto della nostra macro: workbook; poi scegliamo l’evento che sostanzialmente determinerà quando verrà scatenata la nostra azione: SheetSelectionChange (quindi sarà possibile eseguire automaticamente il codice vba ogni volta che andremo a effettuare una nuova selezione nel foglio di lavoro, cioè tutte le volte che andremo a cambiare riga con il cursore o con la freccetta).
Cancelliamo le prime due righe che no ci servono più e andiamo a descrivere la nostra macro inserendo il seguente codice.
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) 'Esegue il codice automaticamente a una nuova selezione'
Cells.Interior.ColorIndex = xlNone 'Nessun colore per il fondino'
Target.EntireRow.Interior.ColorIndex = 43 'Assegno il colore all'intera riga'
Target.Interior.ColorIndex = 43 'Assegno il colore alla cella'
End Sub
Un volta incollato il codice potete salvare, uscire dall’editor per tornare al vostro foglio di lavoro.
Ora, quando andate a cliccare o quando andrete a spostarvi con le frecce, la vostra riga verrà evidenziata e colorata.
Guarda il video tutorial della lezione: evidenziare una riga scorrendo con le frecce
Spero di aver risposto alla domanda e che la lezione ti sia stata utile. Se sì lasciami un commento (anche per eventuali dubbi e soprattutto per dirmi che sei passato da me) 🥰
Qui trovi la mia pagina Facebook, se pensi che me lo meriti, supportarmi lasciandomi una recensione o consigliando la pagina, te ne sarò grata! 🙏 🙏 🙏
Seguimi anche su Instagram e Tik Tok per altri contenuti, mi trovi come @graficaeformazione
Grazie mille per studiare con me, buon lavoro! ❤
22 risposte
Buongiorno
complimenti per il video e la spiegazione
a me non va mi da questo errore
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range
errore di compilazione
come posso risolvere?
Grazie mille
Grazie per il corso e per la chiarezza delle lezioni.
Vorrei inserire il codice di questo tutorial in una macro da mettere nella cartella personale, in modo da poterla richiamare in qualunque file excel aperto (quindi anche xlxs).
Ho provato a copiare il codice all’interno della cartella modulo1 (sottocartella della cartella personale), ma mi dà errore. Se copio il codice nella cartella questa_cartella_di_lavoro (sottocartella della cartella personale), non viene eseguito.
Ci sarebbe anche un modo per potere attivare questa macro automaticamente, senza doverla richiamare?
Praticamente la mia esigenza sarebbe quella di avere in tutti i file excel la colorazione dello sfondo delle celle nel momento in cui sono attive, in particolare evidenziare le celle risultanti usando il tasto “trova”.
Grazie ed ancora complimenti.
Maurizio
Buongiorno, nel VisualBasic trovo solo WorkSheet e non WorkBook.
Di conseguenza non trovo il SheetSelectionChange.
Come posso fare?
Grazie in anticipo
Se incolli il codice dovrebbe impostare tutto da solo
ciao , prima di tutto, complimenti .
Io sono un principiante autodidatta che equivale a “0” ho seguito il tuo tutorial e tutto bene , la cella si colora come desideravo al passaggio del cursore o del mouse , il problema si presenta quando però attivo la protezione al foglio e non funziona più .Io vorrei che nel foglio bloccato mi si colorassero solo le celle sbloccate al passaggio del mouse .
Scusa la mia scarsa preparazione , ti ringrazio se potrai trovare il tempo per aiutarmi . Silvano
Ciao a me non funziona mi dice errorePrivate Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range
come posso fare? Grazie sei bravissima.
Ciao Sandro,
solitamente questo errore si verifica quando il codice VBA nel modulo “ThisWorkbook” contiene un errore. Ti consiglio di controllare attentamente il codice VBA (fai bene copia incolla) e occhio a dove incolli i codice (Foglio 1, 2, 3 o cartella)
Ciao a me non funziona mi dice errorePrivate Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range
come posso fare? Grazie sei bravissima.
Funziona bene, però mi toglie i colori anche da altre celle che voglio che rimangano del colore assegnato. E’ possibile fare riprendere il colore originale alle celle dopo il passaggio del cursore?
Grazie
Fabrizio
Ciao Marinaio70, devi ripristinare i colori con VBA, ho risposto alla tua domanda in questo altro video tutorial: https://www.graficaeformazione.com/formazione/sfondo-vba/
Il codice da aggiungere è questo: Range(“A1:C1”).Interior.ColorIndex = 7
Tra le virgolette metti l’intervallo di celle da colorare.
Fammi sapere
Bel tutorial semplice e lineare…
Se poi volessi cambiare il colore del font basterebbe usare “Font” anziché “Interior”…
Però, ho notato che se ho una tabella già formattata con altri colori (sfondo e font) questi non vengono ripristinati alla perdita del focus… Come si può fare per ripristinarli?
Ciao TX72, devi ripristinare i colori con VBA, ho risposto alla tua domanda in questo altro video tutorial: https://www.graficaeformazione.com/formazione/sfondo-vba/
Il codice da aggiungere è questo: Range(“A1:C1”).Interior.ColorIndex = 7
Tra le virgolette metti l’intervallo di celle da colorare
Non trovo l’opzione SheetSelectionChange
trovata…. ma non funziona la macro. Occorre attivare qualcosa sulle opzioni di excel?
risolto
salve tutto Ok grazie per i tuoi tips FANTASTICI
Grazie Giovanni! :-)
wow” ho provato ed è fantastico ma ho una domanda:
quando scelgo un fogluo anziche l’intero worbook non funziona.
dipende forse del testo che incollato che all’inizio specifica “worbook ecc ecc…” che magari bisogna modificare con qualche altra parola chiave?
Sarebbe molto utile poter applicare questa funzione ai signoli fogli anziche tutti i fogli del documento
A posto, ho riguardato il video con più attenzione e ho risolto ;-) Grazie mille!
Anch’io ho la stessa domanda fatta da “Femilix” in merito sè sia possibile mantenere il formato delle celle colorate in precedenza
Grazie mille e complimenti!
Ciao Marina, devi ripristinare i colori con VBA, ho risposto a questa domanda in questo altro video tutorial: https://www.graficaeformazione.com/formazione/sfondo-vba/
Il codice da aggiungere è questo: Range(“A1:C1”).Interior.ColorIndex = 7
Tra le virgolette metti l’intervallo di celle da colorare
Grazie della lezione, molto utile. Ho una domanda:
una volta impostata la macro mi sparisce tutte le celle che ho precedentemente colorato (colore riempimento) c’è un sistema per mantenerle ?
grazie
Marco
Ciao Marco, devi ripristinare i colori con VBA, ho risposto alla tua domanda in questo altro video tutorial: https://www.graficaeformazione.com/formazione/sfondo-vba/
Il codice da aggiungere è questo: Range(“A1:C1”).Interior.ColorIndex = 7
Tra le virgolette metti l’intervallo di celle da colorare :-)