В Excel VBA есть два метода, принадлежащих объекту Application, для управления двумя или более диапазонами: 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 (union (Range ("A1: B4"), Range ("B3: C6"))) |
Вы можете быть удивлены, увидев в Результате значение 160! Хотя в Union всего 14 ячеек (8 в каждом диапазоне, 2 являются общими), когда вы смотрите на Selection, Union фактически возвращает 16 ячеек, следовательно, Результат равен 160.
Пересечение
Метод Intersect возвращает только общие ячейки в двух или более диапазонах, переданных в качестве аргумента.
Следующая команда выберет диапазон, показанный (серая область) на изображении ниже:
1 | Пересечение (Диапазон ("A1: B4"), Диапазон ("B3: C6")). Выберите |
Использование Intersect
Чаще всего Intersect используется в событиях, связанных с Рабочим листом или Рабочей книгой. Он используется для проверки принадлежности измененных ячеек к интересующему диапазону. Следующий пример с проверкой того, изменились ли ячейки (идентифицированные Target) и Range A1: A10 являются общими, и примите соответствующие меры, если они есть.
Объект Intersect ничего не возвращает, если общих ячеек нет, поэтому Intersect (Target, Range («A1: A10»)) Is Nothing будет True, если общих ячеек нет. Добавление Not к условию делает его истинным только в том случае, если результат теста Intersect (Target, Range («A1: A10»)) Is Nothing является False, другими словами, Target и Range A1: A10 имеют несколько общих ячеек.
12345 | Private Sub Worksheet_Change (значение ByVal как диапазон)Если не пересечение (цель, дальность ("A1: A10")) - это ничто, тогда'Выполните желаемое действиеКонец, еслиКонец подписки |
Автор сценария: Винамра Чандра