Come utilizzare l'istruzione with vba nidificata?
Punti chiave
- Utilizzare l’istruzione VBA With per ridurre al minimo il codice.
- È possibile utilizzare un solo oggetto alla volta quando si utilizza l’istruzione With.
Cos’è VBA con dichiarazione
VBA With è un’istruzione per specificare un oggetto una volta e quindi eseguire più istruzioni per esso. In parole semplici, utilizzando l’istruzione “WITH” per specificare un oggetto, dopodiché è possibile accedere a tutte le proprietà e ai metodi in una volta sola. Inizia con “Con” e termina con “Finisci con”.
Sintassi di VBA con istruzione
Ecco la sintassi che devi utilizzare per utilizzare l’istruzione With in VBA:
With [OBJECT] [Statement] End With
- With : questa è la parola chiave iniziale dell’istruzione che indica a VBA che stai specificando l’oggetto menzionato.
- Oggetto : qui devi specificare l’oggetto che desideri utilizzare.
- Istruzione : una o più istruzioni che si desidera eseguire con l’oggetto specificato.
- End With : questa è la parola chiave finale dell’istruzione.
Esempio per comprendere VBA con Statement
Facciamo un esempio per capire con l’approfondimento. Supponiamo che tu voglia cambiare il colore, la dimensione e il nome del carattere della cella A1. Per fare queste tre cose devi accedere a tre diverse proprietà dei caratteri VBA e il codice sarebbe:
Range("A1").Font.Color = RGB(0, 0, 255) Range("A1").Font.Size = 16 Range("A1").Font.Name = "Consolas"
Ma qui utilizzeremo l’istruzione With invece del codice precedente. Per utilizzare l’istruzione With VBA, è possibile seguire i seguenti passaggi:
- Per prima cosa digita sulla tastiera “Con”.
- Successivamente, utilizza l’intervallo VBA per specificare la cella A1 utilizzando l’oggetto carattere per specificare l’oggetto carattere.
- Successivamente, devi inserire il codice per le tre proprietà e i valori che desideri applicare.
- Alla fine, usa la parola chiave “End With” per terminare l’affermazione.
Ecco il codice che hai appena scritto.
Sub MyMacro() With Range("A1").Font .Color = RGB(0, 0, 255) .Size = 16 .Name = "Consolas" End With End Sub
Ora diamo un’occhiata ad entrambi i codici e proviamo a capire qual è la differenza che abbiamo usando l’istruzione “With”.
Nel primo codice hai utilizzato l’oggetto font tre volte e poi hai utilizzato la proprietà a cui desideri accedere e a cui desideri apportare modifiche.
Ma nel secondo codice hai utilizzato l’istruzione With e hai immediatamente specificato l’oggetto font. E poi tre righe di codice nell’istruzione “With” per accedere alle tre proprietà.
Quando usi l’istruzione “With” e specifichi un oggetto, dice a VBA che tutte le istruzioni che hai scritto dovrebbero essere eseguite con l’oggetto menzionato. Questo non solo ti dà un codice strutturato, ma accelera anche l’esecuzione di una macro e le conferisce una maggiore efficienza.
Nidificato con istruzione
All’inizio ti ho detto che puoi specificare solo un oggetto per utilizzare l’istruzione With. Ma c’è un modo per utilizzare più di uno o anche più elementi con esso. Questo utilizza VBA LOOPS e utilizzeremo FOR EACH LOOP per scorrere più oggetti e utilizzare il “Con”.
Lasciate che vi faccia un esempio; devi esaminare tutti i fogli di lavoro e applicare tutte le seguenti cose a tutte le celle di ciascun foglio di lavoro.
- Dimensione carattere: 16
- Carattere: Verdena
E nella cartella di lavoro hai cinque fogli di lavoro, come nell’esempio seguente:
Utilizzare la procedura seguente per scrivere un’istruzione “With” nidificata.
- Innanzitutto, devi dichiarare una variabile per utilizzare un oggetto del foglio di lavoro.
- Dopodiché, come ho detto, devi usare For Each Loop . Quindi è necessario scrivere un codice con il ciclo che possa scorrere tutti i fogli di lavoro .
- Ora inserisci l’istruzione with che può applicare l’impostazione del carattere di cui abbiamo discusso in precedenza. Per fare riferimento a tutte le celle del foglio di lavoro, è possibile utilizzare “Celle” mentre si specifica l’oggetto.
Ecco il codice completo che hai appena scritto.
Sub MyMacro() Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets With Cells .Font.Size = 16 .Font.Name = "Verdena" End With Next ws End Sub