- Fogli vs. Fogli di lavoro
- Fogli di riferimento
- Attiva vs. Seleziona foglio
- Variabile del foglio di lavoro
- Scorri tutti i fogli nella cartella di lavoro
- Protezione del foglio di lavoro
- Proprietà visibile del foglio di lavoro
- Eventi a livello di foglio di lavoro
- Foglio di lavoro cheat sheet
- Cheatsheet dei fogli di lavoro VBA
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 VBADescrizione | Esempio di codice |
---|---|
Riferimento e attivazione di fogli | |
Nome scheda | Fogli("Input").Attiva |
Nome in codice VBA | Foglio1.Attiva |
Posizione dell'indice | Fogli(1).Attiva |
Seleziona foglio | |
Seleziona foglio | Fogli("Inserimento").Seleziona |
Imposta su variabile | Dim ws come foglio di lavoro Imposta ws = ActiveSheet |
Nome / Rinomina | ActiveSheet.Name = "NuovoNome" |
Foglio successivo | ActiveSheet.Next.Activate |
Passa attraverso tutti i fogli | Dim ws come foglio di lavoro Per ogni w in Fogli di lavoro Msgbox ws.name Avanti w |
Passa attraverso i fogli selezionati | Dim ws come foglio di lavoro Per ogni ws in ActiveWindow.SelectedSheets MsgBox ws.Name Avanti w |
Ottieni ActiveSheet | MsgBox ActiveSheet.Name |
Aggiungi foglio | Fogli.Aggiungi |
Aggiungi foglio e nome | Sheets.Add.Name = "NuovoFoglio" |
Aggiungi foglio con nome da cella | Fogli.Aggiungi.Nome = range("a3").valore |
Aggiungi foglio dopo l'altro | Fogli.Aggiungi dopo:=Fogli("Input") |
Aggiungi foglio dopo e nome | Fogli.Add(After:=Sheets("Input")).Name = "NuovoFoglio" |
Aggiungi foglio prima e nome | Fogli.Add(Before:=Sheets("Input")).Name = "NuovoFoglio" |
Aggiungi foglio alla fine della cartella di lavoro | Fogli.Aggiungi dopo:=Fogli(Fogli.Conteggio) |
Aggiungi foglio all'inizio della cartella di lavoro | Fogli.Add(Before:=Sheets(1)).Name = "FirstSheet" |
Aggiungi foglio a variabile | Dim ws come foglio di lavoro Imposta ws = Fogli.Aggiungi |
Copia fogli di lavoro | |
Sposta il foglio alla fine della cartella di lavoro | Fogli("Foglio1").Sposta dopo:=Fogli(Fogli.Conteggio) |
Alla nuova cartella di lavoro | Fogli("Foglio1").Copia |
Fogli selezionati in una nuova cartella di lavoro | ActiveWindow.SelectedSheets.Copy |
Prima di un altro foglio | Fogli("Foglio1"). Copia prima:=Fogli("Foglio2") |
Prima del primo foglio | Fogli("Foglio1"). Copia prima:=Fogli(1) |
Dopo l'ultimo foglio | Fogli("Foglio1"). Copia dopo:=Fogli(Fogli.Count) |
Copia e nomina | Fogli("Foglio1"). Copia dopo:=Fogli(Fogli.Conteggio) ActiveSheet.Name = "LastSheet" |
Copia e nomina dal valore della cella | Fogli("Foglio1"). Copia dopo:=Fogli(Fogli.Count) ActiveSheet.Name = Range("A1").Value |
A un'altra cartella di lavoro | Fogli("Foglio1").Copia prima:=Cartelle("Esempio.xlsm").Fogli(1) |
Nascondi/Mostra fogli | |
Nascondi foglio | Fogli("Foglio1").visibile = Falso o Fogli("Foglio1").visibile = xlFoglioNascosto |
Scopri foglio | Fogli("Foglio1").Visibile = Vero o Fogli("Foglio1").Visible = xlSheetVisible |
Foglio molto nascosto | Fogli(“Foglio1”).Visible = xlSheetVeryHidden |
Elimina o cancella fogli | |
Elimina foglio | Fogli("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 foglio | Fogli("Foglio1").Cells.Clear |
Cancella solo il contenuto del foglio | Fogli("Foglio1").Cells.ClearContents |
Gamma di fogli trasparenti usati | Fogli("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 VBA | Fogli("Foglio1").Proteggi UserInterfaceOnly:=True |
Annulla protezione di tutti i fogli | Dim ws come foglio di lavoro Per ogni ws nei fogli di lavoro ws.Unprotect "password" Avanti w |