Excel VBA ha due metodi, appartenenti all'oggetto Application, per manipolare due o più intervalli: Union e Intersect.
Unione
Il metodo Union restituisce tutte le celle in due o più intervalli passati come argomento.
Il seguente comando selezionerà l'intervallo mostrato nell'immagine qui sotto:
1 | Unione(Intervallo("A1:B4"),Intervallo("B3:C6")).Seleziona |
Puoi assegnare qualsiasi valore o formula all'intervallo restituito dal metodo Union:
1 | Unione(Intervallo("A1:B4"), Intervallo("B3:C6")) = 10 |
Questo inserirà il valore 10 in ogni cella nell'Unione.
Puoi avvolgere qualsiasi funzione che riepiloga un intervallo attorno a un metodo di unione. L'esempio seguente restituirà la somma dei valori negli intervalli A1:B4 e B3:C6:
1 | Risultato = Application.WorksheetFunction.Sum(union(Range("A1:B4"), Range("B3:C6"))) |
Potresti essere sorpreso di ottenere il valore in Risultato come 160! Sebbene ci siano solo 14 celle nell'Unione (8 in ogni intervallo con 2 comuni) quando guardi Selezione, l'Unione restituisce in realtà 16 celle, quindi il Risultato come 160.
intersecare
Il metodo Intersect restituisce solo le celle comuni in due o più intervalli passati come argomento.
Il seguente comando selezionerà l'intervallo mostrato (area grigia) nell'immagine qui sotto:
1 | Intersezione(Intervallo("A1:B4"),Intervallo("B3:C6")).Seleziona |
Uso di Intersect
L'utilizzo più comune di Intersect è negli eventi associati a un foglio di lavoro oa una cartella di lavoro. Viene utilizzato per verificare se le celle modificate appartengono a un intervallo di interesse. Segue l'esempio con il controllo se le celle sono state modificate (identificate da Target) e l'intervallo A1: A10 sono comuni e, se lo sono, intraprendere l'azione appropriata.
L'oggetto Intersect non restituisce nulla se non ci sono celle comuni, quindi Intersect(Target, Range(“A1:A10”)) Is Nothing sarà True se non ci sono celle comuni. Aggiungere Not alla condizione lo rende True solo se il risultato del test Intersect(Target, Range(“A1:A10”)) Is Nothing è False, in altre parole Target e Range A1:A10 hanno alcune celle in comune.
12345 | Private Sub Worksheet_Change (ByVal Target As Range)If Not Intersect(Target, Range("A1:A10")) non è niente allora'Esegui l'azione desiderataFinisci seFine sottotitolo |
Scritto da: Vinamra Chandra