Excel VBA ma dwie metody, należące do obiektu Application, do manipulowania dwoma lub więcej zakresami: Union i Intersect.
Unia
Metoda Union zwraca wszystkie komórki w co najmniej dwóch zakresach przekazanych jako jej argument.
Następujące polecenie wybierze zakres pokazany na poniższym obrazku:
1 | Unia(Zakres("A1:B4"),Zakres("B3:C6")).Wybierz |
Do zakresu zwracanego przez metodę Union możesz przypisać dowolną wartość lub formułę:
1 | Unia(Zakres("A1:B4"), Zakres("B3:C6")) = 10 |
Spowoduje to wprowadzenie wartości 10 w każdej komórce w Unii.
Możesz zawinąć dowolną funkcję, która podsumowuje zakres wokół metody Union. Poniższy przykład zwróci sumę wartości w zakresach A1:B4 i B3:C6:
1 | Wynik = Application.WorksheetFunction.Sum(union(Range("A1:B4"), Range("B3:C6"))) |
Możesz być zaskoczony, gdy uzyskasz wartość 160! Chociaż w Unii jest tylko 14 komórek (8 w każdym zakresie, przy czym 2 są wspólne), gdy spojrzysz na Zaznaczenie, w rzeczywistości suma zwraca 16 komórek, stąd wynik jako 160.
Przecinać
Metoda Intersect zwraca tylko wspólne komórki w co najmniej dwóch zakresach przekazanych jako jej argument.
Następujące polecenie wybierze zakres pokazany (szare pole) na poniższym obrazku:
1 | Przecięcie(Zakres("A1:B4");Zakres("B3:C6")).Wybierz |
Korzystanie z przecięcia
Najczęstszym zastosowaniem funkcji Przecięcie dotyczy zdarzeń związanych z Arkuszem lub skoroszytem. Służy do sprawdzania, czy zmienione komórki należą do zakresu zainteresowania. Postępując zgodnie z przykładem, sprawdź, czy komórki zmienione (zidentyfikowane przez cel) i zakres A1:A10 są wspólne i podejmij odpowiednie działania, jeśli są.
Obiekt Intersect nie zwraca nic, jeśli nie ma wspólnych komórek, więc Intersect(Target, Range(„A1:A10”)) Is Nothing będzie True, jeśli nie ma wspólnych komórek. Dodanie Nie do warunku czyni go Prawdą tylko wtedy, gdy wynik testu Przecięcie(Cel, Zakres(„A1:A10”)) Jest Nic nie jest Fałszem, innymi słowy Cel i Zakres A1:A10 mają kilka wspólnych komórek.
12345 | Private Sub Worksheet_Change (ByVal Target As Range)Jeśli nie przecina(cel, zakres("A1:A10")) jest niczym wtedy' Podejmij pożądane działanieZakończ, jeśliNapis końcowy |
Autor: Vinamra Chandra