Excel VBA verfügt über zwei Methoden, die zum Application-Objekt gehören, um zwei oder mehr Bereiche zu bearbeiten: Union und Intersect.
Union
Die Union-Methode gibt alle Zellen in zwei oder mehr Bereichen zurück, die als Argument übergeben wurden.
Der folgende Befehl wählt den in der Abbildung unten gezeigten Bereich aus:
1 | Union(Bereich("A1:B4"),Bereich("B3:C6")).Auswählen |
Sie können dem von der Union-Methode zurückgegebenen Bereich einen beliebigen Wert oder jede Formel zuweisen:
1 | Union(Bereich("A1:B4"), Bereich("B3:C6")) = 10 |
Dadurch wird der Wert 10 in jede Zelle der Union eingetragen.
Sie können jede Funktion umschließen, die einen Bereich um eine Union-Methode herum zusammenfasst. Das folgende Beispiel gibt die Summe der Werte in den Bereichen A1:B4 und B3:C6 zurück:
1 | Ergebnis = Application.WorksheetFunction.Sum(union(Range("A1:B4"), Range("B3:C6"))) |
Sie werden überrascht sein, dass der Wert in Result 160 beträgt! Obwohl es in der Union nur 14 Zellen gibt (8 in jedem Bereich, wobei 2 gemeinsam sind), gibt Union bei der Auswahl tatsächlich 16 Zellen zurück, daher das Ergebnis als 160.
Schneiden
Die Intersect-Methode gibt nur die gemeinsamen Zellen in zwei oder mehr Bereichen zurück, die als Argument übergeben wurden.
Der folgende Befehl wählt den im Bild unten angezeigten Bereich (grauer Bereich) aus:
1 | Schnitt(Bereich("A1:B4"),Bereich("B3:C6")).Auswählen |
Verwendung von Intersect
Die häufigste Verwendung von Intersect findet sich in Ereignissen, die einem Arbeitsblatt oder einer Arbeitsmappe zugeordnet sind. Es wird verwendet, um zu testen, ob die geänderte(n) Zelle(n) zu einem interessierenden Bereich gehören. Folgendes Beispiel mit Prüfung, ob die geänderte(n) Zelle(n) (identifiziert durch Ziel) und Bereich A1:A10 üblich sind und entsprechende Maßnahmen ergreifen, wenn dies der Fall ist.
Das Intersect-Objekt gibt nichts zurück, wenn keine gemeinsamen Zellen vorhanden sind, so dass Intersect(Target, Range("A1:A10")) Is Nothing True ist, wenn keine gemeinsamen Zellen vorhanden sind. Das Hinzufügen von Nicht zur Bedingung macht sie nur wahr, wenn das Ergebnis des Tests Intersect(Target, Range(“A1:A10”)) Is Nothing False ist, mit anderen Worten, Target und Range A1:A10 haben einige Zellen gemeinsam.
12345 | Private Sub Worksheet_Change (ByVal Target As Range)Wenn kein Schnitt (Ziel, Bereich("A1:A10")) ist, dann ist nichts' Gewünschte Aktion ausführenEnde WennEnd Sub |
Geschrieben von: Vinamra Chandra