
La struttura With End With in una macro Excel
In questa lezione del corso Excel ti spiego a cosa serve la struttura With End With in una macro Excel.
With [oggetto]
...
End With
A volta capita di dover modificare più proprietà di uno stesso oggetto.
La struttura With [oggetto] End With ti permette di riportare una sola volta il nome dell'oggetto.
Ti faccio un esempio pratico.
Questa macro scrive nella cella B2 il testo "Hello World" di colore rosso in grassetto.
- Sub Macro()
- Range("B2").Select
- ActiveCell.FormulaR1C1 = "Hello world"
- Selection.Font.Color = RGB(255, 0, 0)
- Selection.Font.Bold = 1
- End Sub
In questo caso due proprietà sono associate all'oggetto Selection.Font
Per rendere più ordinato e leggibile il codice puoi usare la struttura With End With
- Sub Macro()
- Range("B2").Select
- ActiveCell.FormulaR1C1 = "Hello world"
- With Selection.Font
- .Color = RGB(255, 0, 0)
- .Bold=1
- End With
- End Sub
In questo modo hai raggruppato le stesse proprietà nel gruppo Selection.Font ed evitato di ripeterlo ogni volta.
Ora il codice è indubbiamente più leggibile e il risultato finale è sempre lo stesso.
Puoi anche usare diverse strutture With annidate all'interno di altre With.
Ad esempio, questa macro modifica diverse proprietà dell'oggetto Selection
- Sub Macro()
- Range("B2").Select
- ActiveCell.FormulaR1C1 = "Hello world"
- With Selection
- With .Font
- .Color = RGB(255, 0, 0)
- .Bold=1
- End With
- With .Interior
- .Color = RGB(255, 0, 0)
- End With
- End With
- End Sub
La struttura With più esterna è assegnata all'oggetto Selection ed è composta da due With annidate.
La prima With annidata è associata alla proprietà .Font mentre la seconda alla proprietà .Interior.