Questo tutorial discuterà la differenza tra VBA ActiveWorkbook e ThisWorkbook.
ActiveWorkbook contro ThisWorkbook
È importante conoscere la differenza tra ActiveWorkbook e ThisWorkbook in VBA:
ActiveWorkbook è la cartella di lavoro attualmente attiva (simile a come ActiveSheet è il foglio attualmente attivo). ThisWorkbook è la cartella di lavoro in cui è archiviato il codice VBA. ThisWorkbook non cambierà mai.
Questa cartella di lavoro
Pensa a ThisWorkbook come a una variabile oggetto che ti consente di fare riferimento alla cartella di lavoro contenente il codice attualmente in esecuzione.
Questo codice visualizzerà un MessageBox con il nome ThisWorkbook:
123 | Sub Show_ThisWorkbook()MsgBox ThisWorkbook.NameFine sottotitolo |
Cartella di lavoro attiva
ActiveWorkbook è una variabile oggetto che consente di fare riferimento alla cartella di lavoro attualmente attiva.
Questo codice visualizzerà un MessageBox con il nome ActiveWorkbook:
123 | Sub Show_ActiveWorkbook()MsgBox ActiveWorkbook.NameFine sottotitolo |
VBA assume ActiveWorkbook
Quando si tenta di lavorare con oggetti (es. Fogli) all'interno di ActiveWorkbook, non è necessario indicare esplicitamente l'oggetto ActiveWorkbook. VBA presumerà che ti riferisci all'ActiveWorkbook.
Così questo:
1 | ActiveWorkbook.Sheets("Foglio1").Intervallo("$A$5").Valore = 1 |
È lo stesso di questo:
1 | Fogli("Foglio1").Intervallo("$A$5").Valore = 1 |
Le cartelle di lavoro nuove o aperte sono attive
Ogni volta che crei una nuova cartella di lavoro o apri una cartella di lavoro, la cartella di lavoro diventa "attiva". Puoi vedere di persona con questo codice che aggiungerà una cartella di lavoro e recupererà il nome della nuova cartella di lavoro:
1234 | Sub Show_ActiveWorkbook_Add()Cartelle di lavoro.AggiungiMsgBox ActiveWorkbook.NameFine sottotitolo |
Dopo aver aggiunto o aperto una cartella di lavoro, è possibile assegnarla a una variabile utilizzando l'oggetto ActiveWorkbook. Ti mostreremo come negli esempi seguenti:
Esempi di questa cartella di lavoro e cartella di lavoro attiva
Cambia cartella di lavoro attiva
Cambia la cartella di lavoro attiva usando il nome della cartella di lavoro:
1 | Cartelle di lavoro("Libro1").Attiva |
Cambia la cartella di lavoro attiva utilizzando il numero di ordine del foglio di lavoro (1 è il primo foglio di lavoro in una cartella di lavoro)
1 | Cartelle di lavoro(1).Attiva |
Rendi attiva questa cartella di lavoro
Rendi ThisWorkbook (dove è memorizzato il codice attualmente in esecuzione) l'ActiveWorkbook:
1 | ThisWorkbook.Attiva |
Imposta ActiveWorkbook su una variabile
Assegna l'ActiveWorkbook a una variabile oggetto della cartella di lavoro:
12 | Dim wb come cartella di lavoroImposta wb = ActiveWorkbook |
Chiudi e salva la cartella di lavoro attiva
Chiude e salva ActiveWorkbook:
1 | ActiveWorkbook.Close SaveChanges:=True |
Chiudi la cartella di lavoro attiva senza salvare
Chiude ActiveWorkbook senza salvare:
1 | ActiveWorkbook.Close SaveChanges:=False |
ActiveWorkbook - Salva con nome
Esegue un salvataggio con nome della cartella di lavoro attiva.
123456789 | Sotto Salva come cartella di lavoro attiva()Risultato scuro come varianterisultato = Application.GetSaveAsFilename(InitialFileName:="", _FileFilter: = "Cartella di lavoro con attivazione macro di Excel (*.xlsm), *.xlsm, cartella di lavoro Excel (*.xlsx), *.xlsx")Se risultato = Falso, allora ritornaActiveWorkbook.Salva come risultatoFine sottotitolo |