Excel VBA има два метода, принадлежащи към обект на приложение, за манипулиране на два или повече диапазона: Union и Intersect.
Съюз
Методът Union връща всички клетки в два или повече диапазона, предадени като негов аргумент.
Следващата команда ще избере диапазона, показан на изображението по -долу:
1 | Съюз (Обхват ("A1: B4"), Диапазон ("B3: C6")). Изберете |
Можете да присвоите всяка стойност или формула на диапазона, върнат по метода на Union:
1 | Съюз (Обхват ("A1: B4"), Обхват ("B3: C6")) = 10 |
Това ще въведе стойността 10 във всяка клетка в Съюза.
Можете да увиете всяка функция, която обобщава диапазон около метод на Union. Следващият пример ще върне сумата от стойностите в диапазоните A1: B4 и B3: C6:
1 | Резултат = Application.WorksheetFunction.Sum (съюз (Range ("A1: B4"), Range ("B3: C6"))) |
Може да се изненадате да получите стойността в Резултата като 160! Въпреки че в Съюза има само 14 клетки (8 във всеки диапазон, като 2 са общи), когато погледнете Selection, Union всъщност връща 16 клетки, следователно Резултатът като 160.
Пресечете се
Методът Intersect връща само общите клетки в два или повече диапазона, предадени като негов аргумент.
Следващата команда ще избере показания диапазон (сива област) на изображението по -долу:
1 | Пресечете (Обхват ("A1: B4"), Обхват ("B3: C6")). Изберете |
Използване на Intersect
Най -честото използване на Intersect е в събития, свързани с работен лист или работна книга. Използва се за проверка дали променените клетки (и) принадлежат на диапазон от интерес. Следващ пример с проверка дали клетката (ите) са се променили (идентифицирани от Target) и Обхват A1: A10 са често срещани и предприемете подходящи действия, ако са.
Обектът Intersect не връща нищо, ако няма общи клетки, така че Intersect (Target, Range (“A1: A10”)) Is Nothing няма да е истина, ако няма общи клетки. Добавянето на Не към условието го прави Истина само ако резултатът от теста Intersect (Target, Range (“A1: A10”)) Is Nothing е False, с други думи Target и Range A1: A10 имат някои общи клетки.
12345 | Частен под работен лист_Смяна (ByVal Target As Range)Ако не се пресичат (Цел, Обхват ("A1: A10")) Няма нищо„Предприемете желаните действияКрай АкоEnd Sub |
Написано от: Винамра Чандра