VBA ActiveWorkbook vs ThisWorkbook

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

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave