image

Il blocco With – End With in VBA è usato per dire a VBA che useremo l’oggetto dato e dovrebbe considerare le proprietà dell’oggetto dato solo una volta che usiamo l’operatore punto. Vedremo esempi più avanti in questo articolo.

Sintassi con – Fine con blocco

With [Object]

'Code to alter or use [Object]

'--

'--

End With

Quindi ora che conosciamo la sintassi del blocco With – End With, vediamo il suo utilizzo.

Esempio di With – End With Block Diciamo che voglio fare diverse modifiche all’intervallo A2: A10. Voglio selezionare questo intervallo, cambiare i suoi colori di riempimento, lo stile del carattere ecc. Come lo farei in generale? Probabilmente in questo modo:

Sub test()

Range("A1:A10").Select

Range("A1:A10").Interior.ColorIndex = 8

Range("A1:A10").Font.Name = "Algerian"

Range("A1:A10").Font.ColorIndex = 12

Range("A1:A10").Font.Underline = xlUnderlineStyleDouble

Range("A1:A10").Copy Range("B1:B10")

Range("A1:A10").Clear

End Sub

Quanto sopra seleziona l’intervallo A1: A10. Cambia il colore interno dell’intervallo in indice di colore 8. Cambia il carattere in algerino. Cambia il colore del carattere nell’indice dei colori 12. Sottolinea il testo nell’intervallo con doppie sottolineature.

Quindi copia l’intervallo A1: A10 nell’intervallo B1: B10 dello stesso foglio. Alla fine cancella l’intervallo A1: A10.

Puoi notare che per fare ogni operazione con intervallo A1: A10, dobbiamo scriverlo ogni volta. Quindi l’operatore punto accede alle sue proprietà. Ciò riduce la velocità di elaborazione e aumenta il sovraccarico di lavoro per i programmatori VBA. L’alternativa per farlo è usare un blocco With: il codice seguente fa lo stesso del codice precedente ma più veloce.

Sub test()

With Range("A1:A10")

.Select

.Interior.ColorIndex = 8

.Font.Name = "Algerian"

.Font.ColorIndex = 12

.Font.Underline = xlUnderlineStyleDouble

.Copy Range("B1:B10")

.Clear

End With

End Sub

image

Vediamo un altro esempio.

Se hai creato un oggetto di Outlook Mail, puoi utilizzare quell’oggetto per inizializzare tutte le sue proprietà e utilizzare i metodi.

Set outMail = Outlook.Application.CreateItem(0)

With outMail

.To = "abcd.mail.com" 'Mandatory. Here you define the destination mail id.

.cc = "cc.mail.com" 'optional. Cc mail id if you want.

.BCC = "bcc.mail.com" 'optional. Bcc mail id if you want.

.Subject = subj 'should have. The massage on mail body.

.Body = msg 'optional. The massage on mail body.

.Attachments.Add "C:/exceltip.com\test.xlsx"

.Send

End With

Come funziona?

Bene, quando scriviamo With Range (“A1: A10”), vba blocca il suo riferimento all’intervallo dell’oggetto (“A1: A10”). Quindi, ogni volta che scriviamo l’operatore punto (.), VBA elenca tutti i membri di questa classe di intervallo che influenzerà solo l’intervallo dell’oggetto (“A1: A10”) o qualsiasi oggetto che hai menzionato. Il blocco di riferimento viene rilasciato quando VBA legge l’istruzione End With.

Annidato con blocchi Possiamo avere un blocco all’interno di un altro blocco. Nell’esempio sopra abbiamo utilizzato un oggetto intervallo per selezionarlo. Quindi abbiamo usato Range.Font più volte per lavorare con i caratteri. Anche questo è ripetitivo. Anche il codice sopra può essere scritto così:

Sub test()

With Range("A1:A10")

.Select

.Interior.ColorIndex = 8

'Using another With within a With Block

With .Font

.Name = "Algerian"

.ColorIndex = 12

.Underline = xlUnderlineStyleDouble

End With

.Copy Range("B1:B10")

.Clear

End With

End Sub

Il blocco interno con dovrebbe fare riferimento a un oggetto che è un membro secondario dell’oggetto esterno. Possiamo riferirci all’esterno con come oggetto con e interno con come bambino con. Quando inizi inner with, l’oggetto dovrebbe essere scritto con l’operatore punto precedente.

Una volta che sei un bambino, non puoi accedere alle proprietà specifiche del genitore. Ad esempio, il codice seguente è sbagliato.

Sub test()

With Range("A1:A10")

.Select

.Interior.ColorIndex = 8

'Using another With within a With Block

With .Font

.Name = "Algerian"

.ColorIndex = 12

.Underline = xlUnderlineStyleDouble

'The below code will generate error as copy and clear methods does not belong to font class.

.Copy Range("B1:B10")

.Clear

End With

End With

End Sub

Completamente qualificato con blocco Se voglio apportare alcune modifiche con il carattere dell’intervallo A1: A10 di foglio2 nel codice contenente la cartella di lavoro, allora dovremmo utilizzare un blocco completo.

I due codici seguenti funzioneranno allo stesso modo.

Sub test2()

With ThisWorkbook

With .Sheets("Sheet2")

With .Range("A1:A10")

With .Font

.Name = "Algerian"

.ColorIndex = 12

.Underline = xlUnderlineStyleDouble

End With

End With

End With

End With

End Sub
'Fully qualified with block

Sub test3()

With ThisWorkbook.Sheets("Shee2").Range("A1:A10").Font

.Name = "Algerian"

.ColorIndex = 12

.Underline = xlUnderlineStyleDouble

End With

End Sub

Puoi vedere la differenza. Quindi, quando sai che utilizzerai più metodi e proprietà da un oggetto, dai un nome completo all’inizio. Se utilizzerai oggetti figlio, utilizza l’approccio precedente. I programmatori esperti usano entrambi i metodi in situazioni adatte.

Quindi sì ragazzi, questo è il modo in cui usiamo il blocco With – End With in VBA. Spero di essere stato abbastanza esplicativo e questo articolo ti ha aiutato a capire il concetto di With – End With. Se hai dubbi su questo articolo o su qualsiasi altro argomento, chiedimi nella sezione commenti qui sotto. Sarò felice di aiutarti

Articoli correlati:

link: / general-topics-in-vba-vba-variables-in-excel [Variabili VBA in Excel] | * VBA sta per Visual Basic for Applications.

È un linguaggio di programmazione di Microsoft. Viene utilizzato con applicazioni Microsoft Office come MSExcel, MS-Word e MS-Access mentre le variabili VBA sono parole chiave specifiche.

link: / general-topics-in-vba-excel-vba-variable-scope [Excel VBA Variable Scope] | * In tutti i linguaggi di programmazione, abbiamo specificatori di accesso alle variabili che definiscono da dove è possibile accedere a una variabile definita. Excel VBA non fa eccezione. Anche VBA ha specificatori di ambito.

link: / celle-intervalli-righe-e-colonne-in-vba-qual-è-la-differenza-tra-byref-e-byval-argomenti-vba-interview-question [Argomenti ByRef e ByVal] | Quando un argomento viene passato come argomento ByRef a una funzione secondaria o diversa, viene inviato il riferimento della variabile effettiva. Qualsiasi modifica apportata alla copia della variabile si rifletterà nell’argomento originale.

link: / files-cartella-di-lavoro-e-fogli di lavoro-in-vba-cancella-fogli-senza-richieste-di-conferma-usando-vba-in-microsoft-excel [Elimina fogli senza richieste di conferma usando VBA in Microsoft Excel] | Dato che stai eliminando fogli usando VBA, sai cosa stai facendo.

Vorresti dire a Excel di non mostrare questo avviso ed eliminare il dannato foglio.

Aggiungi e salva una nuova cartella di lavoro usando VBA in Microsoft Excel 2016 | In questo codice abbiamo prima creato un riferimento a un oggetto cartella di lavoro. E poi l’abbiamo inizializzato con un nuovo oggetto cartella di lavoro. Il vantaggio di questo approccio è che puoi eseguire facilmente le operazioni su questa nuova cartella di lavoro. Come salvare, chiudere, eliminare, ecc. Visualizza un messaggio su La barra di stato di Excel VBA * | La barra di stato in Excel può essere utilizzata come monitor del codice. Quando il tuo codice VBA è lungo e svolgi diverse attività utilizzando VBA, spesso disabiliti l’aggiornamento dello schermo in modo da non vedere lo sfarfallio dello schermo.

link: / general-topics-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Turn Off Warning Messages Using VBA In Microsoft Excel 2016] | * Questo codice non solo disabilita VBA avvisa ma aumenta anche l’efficienza temporale del codice. Vediamo come.

Articoli popolari:

link: / keyboard-formula-shortcuts-50-excel-shortcuts-to-aumentare-la-produttività [50 scorciatoie Excel per aumentare la produttività] | Diventa più veloce nel tuo compito. Queste 50 scorciatoie ti faranno lavorare ancora più velocemente su Excel.

link: / formule-e-funzioni-introduzione-di-vlookup-funzione [La funzione CERCA.VERT in Excel] | Questa è una delle funzioni più utilizzate e popolari di Excel che viene utilizzata per cercare valori da diversi intervalli e fogli. link: / tips-countif-in-microsoft-excel [COUNTIF in Excel 2016] | Contare i valori con le condizioni utilizzando questa straordinaria funzione. Non è necessario filtrare i dati per contare valori specifici.

La funzione Countif è essenziale per preparare la tua dashboard.

link: / excel-formula-and-function-excel-sumif-function [Come usare la funzione SUMIF in Excel] | Questa è un’altra funzione essenziale della dashboard. Questo ti aiuta a riassumere i valori su condizioni specifiche.