Fogli VBA: la guida definitiva

Questa è la guida definitiva per lavorare con Fogli / Fogli di lavoro in Excel.

In fondo a questa guida, abbiamo creato un cheat sheet di comandi comuni per lavorare con i fogli.

Fogli vs. Fogli di lavoro

Esistono due modi per fare riferimento a Fogli utilizzando VBA. Il primo è con l'oggetto Fogli:

1 Fogli("Foglio1").Attiva

L'altro è con l'oggetto Fogli di lavoro:

1 Fogli di lavoro("Foglio1").Attiva

Il 99% delle volte, questi due oggetti sono identici. In effetti, se hai cercato online esempi di codice VBA, probabilmente hai visto entrambi gli oggetti utilizzati. Ecco la differenza:

La Raccolta Fogli contiene Fogli di Lavoro E Fogli Grafico.

Quindi usa Fogli se vuoi includere fogli di lavoro regolari E fogli grafici. Utilizzare Fogli di lavoro se si desidera escludere Fogli grafici. Per il resto di questa guida useremo fogli e fogli di lavoro in modo intercambiabile.

Fogli di riferimento

Esistono diversi modi per fare riferimento a Fogli:

  • Foglio attivo
  • Nome scheda foglio
  • Numero indice foglio
  • Nome codice foglio

Foglio attivo

ActiveSheet è il foglio attualmente attivo. In altre parole, se hai messo in pausa il tuo codice e hai guardato Excel, è il foglio che è visibile. L'esempio di codice seguente visualizzerà una Messagebox con il nome ActiveSheet.

1 MsgBox ActiveSheet.Name

Nome del foglio

Probabilmente hai più familiarità con il riferimento ai fogli in base al nome della scheda:

1 Fogli("Nome scheda").Attiva

Numero indice foglio

Il numero di indice del foglio è la posizione del foglio nella cartella di lavoro. 1 è il primo foglio. 2 è il secondo foglio ecc.:

1 Fogli(1).Attiva

Numero indice foglio - Ultimo foglio nella cartella di lavoro

Per fare riferimento all'ultimo foglio nella cartella di lavoro, utilizzare Sheets.Count per ottenere l'ultimo numero indice:

1 Fogli(Fogli.Conteggio).Attiva

Foglio “Nome in codice”

Il nome del codice foglio è il nome dell'oggetto in VBA:

1 NomeCodice.Attiva

Riferimenti a fogli in altre cartelle di lavoro

È anche facile fare riferimento a Fogli in altre cartelle di lavoro. Per fare ciò, è necessario utilizzare l'oggetto Cartelle di lavoro:

1 Cartelle di lavoro ("Esempi_VBA.xlsm"). Fogli di lavoro ("Foglio1"). Attiva

Importante: La cartella di lavoro deve essere aperta prima di poter fare riferimento ai suoi fogli.

Attiva vs. Seleziona foglio

In un altro articolo discutiamo tutto sull'attivazione e la selezione dei fogli. La versione breve è questa:

Quando attivi un foglio, questo diventa ActiveSheet. Questo è il foglio che vedresti se guardassi il tuo programma Excel. È possibile attivare un solo foglio alla volta.

Attiva un foglio

1 Fogli("Foglio1").Attiva

Quando selezioni un foglio, questo diventa anche ActiveSheet. Tuttavia, puoi selezionare più fogli contemporaneamente. Quando vengono selezionati più fogli contemporaneamente, il foglio "in alto" è ActiveSheet. Tuttavia, puoi attivare o disattivare ActiveSheet all'interno dei fogli selezionati.

Seleziona un foglio

1 Fogli("Foglio1").Seleziona

Seleziona più fogli

Usa una matrice per selezionare più fogli contemporaneamente:

1 Fogli di lavoro(Array("Foglio2", "Foglio3")).Seleziona

Variabile del foglio di lavoro

Assegnare un foglio di lavoro a una variabile consente di fare riferimento al foglio di lavoro in base al nome della variabile. Questo può risparmiare un sacco di digitazione e rendere il tuo codice più facile da leggere. Ci sono anche molte altre ragioni per cui potresti voler usare le variabili.

Per dichiarare una variabile del foglio di lavoro:

1 Dim ws come foglio di lavoro

Assegna un foglio di lavoro a una variabile:

1 Imposta ws = Fogli("Foglio1")

Ora puoi fare riferimento alla variabile del foglio di lavoro nel tuo codice:

1 ws.Activate

Scorri tutti i fogli nella cartella di lavoro

Le variabili del foglio di lavoro sono essenziali quando si desidera scorrere tutti i fogli di lavoro in una cartella di lavoro. Il modo più semplice per farlo è:

12345 Dim ws come foglio di lavoroPer ogni cosa nei fogli di lavoroMsgBox ws.nameAvanti w

Questo codice scorrerà tutti i fogli di lavoro nella cartella di lavoro, visualizzando ogni nome del foglio di lavoro in una finestra di messaggio. Il ciclo di tutti i fogli in una cartella di lavoro è molto utile quando si bloccano/sbloccano o si nascondono/mostrano più fogli di lavoro contemporaneamente.

Protezione del foglio di lavoro

Protezione della cartella di lavoro

La protezione della cartella di lavoro blocca la cartella di lavoro da modifiche strutturali come l'aggiunta, l'eliminazione, lo spostamento o l'occultamento dei fogli di lavoro.

Puoi attivare la protezione della cartella di lavoro utilizzando VBA:

1 ActiveWorkbook.Proteggi password:="Password"

o disabilitare la protezione della cartella di lavoro:

1 ActiveWorkbook.UnProtect Password:="Password"

Nota: puoi anche proteggere/rimuovere la protezione senza password omettendo l'argomento Password:

1 ActiveWorkbook.Proteggi

Protezione del foglio di lavoro

La protezione a livello di foglio di lavoro impedisce modifiche ai singoli fogli di lavoro.

Proteggi foglio di lavoro

1 Fogli di lavoro("Foglio1").Proteggi "Password"

Foglio di lavoro per rimuovere la protezione

1 Fogli di lavoro ("Foglio1"). Rimuovi protezione "Password"

Esistono diverse opzioni per la protezione dei fogli di lavoro (consentire modifiche alla formattazione, consentire all'utente di inserire righe, ecc.) Si consiglia di utilizzare il registratore di macro per registrare le impostazioni desiderate.

Discuteremo la protezione del foglio di lavoro in modo più dettagliato qui.

Proprietà visibile del foglio di lavoro

Potresti già sapere che i fogli di lavoro possono essere nascosti:

Esistono in realtà tre impostazioni di visibilità del foglio di lavoro: Visibile, Nascosto e Molto nascosto.I fogli nascosti possono essere resi visibili da qualsiasi normale utente di Excel, facendo clic con il pulsante destro del mouse nell'area della scheda del foglio di lavoro (mostrata sopra). I fogli VeryHidden possono essere visualizzati solo con il codice VBA o dall'editor VBA. Utilizzare i seguenti esempi di codice per nascondere/visualizzare fogli di lavoro:

Scopri foglio di lavoro

1 Fogli di lavoro("Foglio1").Visible = xlSheetVisible

Nascondi foglio di lavoro

1 Fogli di lavoro("Foglio1").visibile = xlFoglioNascosto

Foglio di lavoro molto nascosto

1 Fogli di lavoro("Foglio1").Visible = xlSheetVeryHidden

Eventi a livello di foglio di lavoro

Gli eventi sono trigger che possono causare l'esecuzione di "Procedure evento". Ad esempio, è possibile eseguire il codice ogni volta che viene modificata una cella di un foglio di lavoro o quando viene attivato un foglio di lavoro.

Le procedure evento del foglio di lavoro devono essere inserite in un modulo del foglio di lavoro:

Ci sono numerosi eventi del foglio di lavoro. Per vedere un elenco completo, vai a un modulo del foglio di lavoro, seleziona "Foglio di lavoro" dal primo menu a discesa. Quindi selezionando una procedura evento dal secondo menu a discesa per inserirla nel modulo.

Foglio di lavoro Attiva evento

Gli eventi di attivazione del foglio di lavoro vengono eseguiti ogni volta che il foglio di lavoro viene aperto.

123 Foglio di lavoro secondario privato_Activate()Intervallo("A1").SelezionaFine sottotitolo

Questo codice selezionerà la cella A1 (reimpostando l'area di visualizzazione in alto a sinistra del foglio di lavoro) ogni volta che viene aperto il foglio di lavoro.

Evento di modifica del foglio di lavoro

Gli eventi di modifica del foglio di lavoro vengono eseguiti ogni volta che un valore di cella viene modificato nel foglio di lavoro. Leggi il nostro tutorial sugli eventi di modifica del foglio di lavoro per ulteriori informazioni.

Foglio di lavoro cheat sheet

Di seguito troverai un cheat sheet contenente esempi di codice comuni per lavorare con i fogli in VBA

Cheatsheet dei fogli di lavoro VBA

Fogli di lavoro VBA
DescrizioneEsempio di codice
Riferimento e attivazione di fogli
Nome schedaFogli("Input").Attiva
Nome in codice VBAFoglio1.Attiva
Posizione dell'indiceFogli(1).Attiva
Seleziona foglio
Seleziona foglioFogli("Inserimento").Seleziona
Imposta su variabileDim ws come foglio di lavoro
Imposta ws = ActiveSheet
Nome / RinominaActiveSheet.Name = "NuovoNome"
Foglio successivoActiveSheet.Next.Activate
Passa attraverso tutti i fogliDim ws come foglio di lavoro
Per ogni w in Fogli di lavoro
Msgbox ws.name
Avanti w
Passa attraverso i fogli selezionatiDim ws come foglio di lavoro
Per ogni ws in ActiveWindow.SelectedSheets
MsgBox ws.Name
Avanti w
Ottieni ActiveSheetMsgBox ActiveSheet.Name
Aggiungi foglioFogli.Aggiungi
Aggiungi foglio e nomeSheets.Add.Name = "NuovoFoglio"
Aggiungi foglio con nome da cellaFogli.Aggiungi.Nome = range("a3").valore
Aggiungi foglio dopo l'altroFogli.Aggiungi dopo:=Fogli("Input")
Aggiungi foglio dopo e nomeFogli.Add(After:=Sheets("Input")).Name = "NuovoFoglio"
Aggiungi foglio prima e nomeFogli.Add(Before:=Sheets("Input")).Name = "NuovoFoglio"
Aggiungi foglio alla fine della cartella di lavoroFogli.Aggiungi dopo:=Fogli(Fogli.Conteggio)
Aggiungi foglio all'inizio della cartella di lavoroFogli.Add(Before:=Sheets(1)).Name = "FirstSheet"
Aggiungi foglio a variabileDim ws come foglio di lavoro
Imposta ws = Fogli.Aggiungi
Copia fogli di lavoro
Sposta il foglio alla fine della cartella di lavoroFogli("Foglio1").Sposta dopo:=Fogli(Fogli.Conteggio)
Alla nuova cartella di lavoroFogli("Foglio1").Copia
Fogli selezionati in una nuova cartella di lavoroActiveWindow.SelectedSheets.Copy
Prima di un altro foglioFogli("Foglio1"). Copia prima:=Fogli("Foglio2")
Prima del primo foglioFogli("Foglio1"). Copia prima:=Fogli(1)
Dopo l'ultimo foglioFogli("Foglio1"). Copia dopo:=Fogli(Fogli.Count)
Copia e nominaFogli("Foglio1"). Copia dopo:=Fogli(Fogli.Conteggio)
ActiveSheet.Name = "LastSheet"
Copia e nomina dal valore della cellaFogli("Foglio1"). Copia dopo:=Fogli(Fogli.Count)
ActiveSheet.Name = Range("A1").Value
A un'altra cartella di lavoroFogli("Foglio1").Copia prima:=Cartelle("Esempio.xlsm").Fogli(1)
Nascondi/Mostra fogli
Nascondi foglioFogli("Foglio1").visibile = Falso
o
Fogli("Foglio1").visibile = xlFoglioNascosto
Scopri foglioFogli("Foglio1").Visibile = Vero
o
Fogli("Foglio1").Visible = xlSheetVisible
Foglio molto nascostoFogli(“Foglio1”).Visible = xlSheetVeryHidden
Elimina o cancella fogli
Elimina foglioFogli("Foglio1").Elimina
Elimina foglio (gestione degli errori)In caso di errore Riprendi Avanti
Fogli("Foglio1").Elimina
In caso di errore Vai a 0
Elimina foglio (nessuna richiesta)Application.DisplayAlerts = False
Fogli("Foglio1").Elimina
Application.DisplayAlerts = True
Cancella foglioFogli("Foglio1").Cells.Clear
Cancella solo il contenuto del foglioFogli("Foglio1").Cells.ClearContents
Gamma di fogli trasparenti usatiFogli("Foglio1").UsedRange.Clear
Proteggi o annulla la protezione dei fogli
Annulla protezione (nessuna password)Fogli("Foglio1").Unprotect
Annulla protezione (password)Fogli("Foglio1").Rimuovi protezione "Password"
Proteggi (nessuna password)Fogli("Foglio1").Proteggi
Proteggi (password)Fogli("Foglio1").Proteggi "Password"
Proteggi ma consenti l'accesso a VBAFogli("Foglio1").Proteggi UserInterfaceOnly:=True
Annulla protezione di tutti i fogliDim ws come foglio di lavoro
Per ogni ws nei fogli di lavoro
ws.Unprotect "password"
Avanti w
wave wave wave wave wave