VBA ThisWorkbook

Excel VBA ThisWorkbook

VBA ThisWorkbook indica la cartella di lavoro in cui stiamo scrivendo il codice Excel. Ad esempio, se stai lavorando nella cartella di lavoro denominata "Vendite 2019.xlsx", di solito ci riferiamo alla cartella di lavoro in questo modo.

Cartelle di lavoro ("Vendite 2019.xlsx"). Attiva

Il codice attiverà la cartella di lavoro denominata "Sales 2019.xlsx".

Invece di scrivere in questo modo, possiamo semplicemente scrivere il codice VBA di seguito.

ThisWorkbook.Activate '

Qui ThisWorkbook si riferisce alla cartella di lavoro in cui stiamo scrivendo il codice. Facendo riferimento a questa parola possiamo eseguire tutte le attività nella cartella di lavoro corrente ed evitare codice lungo con un nome di cartella di lavoro completamente denominato.

Sono sicuro che devi aver visto anche la parola "Cartella di lavoro attiva" quando ti riferisci al codice degli altri. Questa è anche una delle parole usate spesso nella codifica. Vedremo quali sono le differenze tra queste due parole in basic.

Lavorare con ThisWorkbook in Excel VBA

La parola di riferimento "ThisWorkbook" è più affidabile del qualificatore dell'oggetto Workbooks. Una delle tendenze umane è la digitazione errata del nome della cartella di lavoro, il che si traduce in un messaggio di errore.

Un altro motivo importante per cui VBA ThisWorkbook è più affidabile perché, nel caso in cui cambiamo il nome della cartella di lavoro, dobbiamo modificare il codice perché abbiamo usato la parola "ThisWorkbook".

Quindi, ThisWorkbook è più sicuro da usare per fare riferimento alla cartella di lavoro in cui stiamo scrivendo il codice.

Puoi scaricare questo modello Excel VBA ThisWorkbook qui - Modello Excel VBA ThisWorkbook

Esempio 1

Vedremo alcuni degli esempi in cui possiamo usare la parola ThisWorkbook in Excel VBA. Il codice seguente stamperà il nome della cartella di lavoro.

Codice:

 Sub TWB_Example1 () Dim WBName As String WBName = ThisWorkbook.Name MsgBox WBName End Sub 

Quando si esegue il codice manualmente o utilizzando il tasto F5, il codice sopra mostrerà il nome della cartella di lavoro nella finestra del messaggio in VBA.

Esempio n. 2

Invece di usare la parola "Questa cartella di lavoro" possiamo usare le variabili per impostare il riferimento alla cartella di lavoro e persino ridurre drasticamente la lunghezza del codice in VBA. Ad esempio, guarda prima il codice seguente.

Codice:

 Sub TWB_Example2 () ThisWorkbook.Activate ThisWorkbook.Worksheets ("Sheet1"). Activate ThisWorkbook.Save ThisWorkbook.Close ThisWorkbook.SaveAs End Sub 

Il codice precedente ha utilizzato "ThisWorkbook" in ogni riga del codice. Quanto è difficile digitare la parola ogni volta. Quindi, possiamo minimizzarlo usando le variabili.

Ora guarda il codice seguente con la variabile.

Codice:

 Sub TWB_Example2 () Dim Wb As Workbook Set Wb = ThisWorkbook Wb.Activate Wb.Worksheets ("Sheet1"). Activate Wb.Save Wb.Close Wb.SaveAs End Sub 

Sembra bello, non è vero ??

Lasciate che vi spieghi il codice ragazzi.

Per prima cosa ho dichiarato la variabile come oggetto cartella di lavoro.

Dim Wb As Workbook

Poiché si tratta di una variabile oggetto, è necessario impostare il riferimento alla cartella di lavoro particolare. Quindi ho usato il riferimento "ThisWorkbook".

Imposta Wb = ThisWorkbook

Ora la variabile "Wb" fa riferimento alla cartella di lavoro in cui stiamo scrivendo il codice al momento. Da qui in avanti nella procedura non è necessario utilizzare la parola "ThisWorkbook" invece possiamo utilizzare la variabile "Wb"

Cartella di lavoro attiva rispetto a questa cartella di lavoro in Excel VBA

Come ho detto all'inizio dell'articolo, molti programmatori usano le parole Active Workbook e ThisWorkbook molto spesso nella loro codifica VBA. Come lettore o nuovo studente, non è facile capire questi due. Quindi, lascia che ti spieghi alcune delle differenze.

Differenza n. 1: significato

  • Cartella di lavoro attiva: la cartella di lavoro attiva non è necessariamente la cartella di lavoro in cui stiamo scrivendo il codice al momento. Se sono presenti più cartelle di lavoro aperte e qualunque cartella di lavoro sia visibile sullo schermo viene considerata cartella di lavoro attiva .
  • ThisWorkbook: ThisWorkbook è sempre la cartella di lavoro in cui stiamo scrivendo il codice al momento.

Differenza 2: possibilità di errore

  • Cartella di lavoro attiva: l' utilizzo di Active nella codifica può causare molti errori e confusione perché non sappiamo mai quale cartella di lavoro è attiva a meno che non menzioniamo specificamente la cartella di lavoro da attivare prima di utilizzare la parola Cartella di lavoro attiva.
  • ThisWorkbook: ThisWorkbook non può andare storto perché non importa quale cartella di lavoro è attiva, prende sempre il riferimento della cartella di lavoro in cui stiamo scrivendo il codice.