Доброго времени суток уважаемые читатели! В этой статье мы рассмотрим процедуру ОписаниеОбластей (для определения типа выделенного диапазона и проверки наличия множественных областей). Часть кода была описана в прошлой статье 112.1, а там же мы разобрали функцию ТипОбласти. Итак:
Разберем код напротив фигурных скобок
Данный фрагмент кода отвечает за определение и анализ типов выделенных диапазонов в Excel.
- КоличествоОбластей = Selection.Areas.Count: Здесь определяется количество выделенных областей в текущем выделении.
- If КоличествоОбластей = 1 Then: Проверяется условие: если количество областей равно 1, то выполняются следующие действия.
- ТипВыделения = "Одиночное выделение": Если выделена только одна область, устанавливается тип выделения как "Одиночное выделение".
- Else: В случае, если количество областей не равно 1, выполняется следующий блок кода.
- ТипВыделения = "Множественное выделение": Если выделено более одной области, устанавливается тип выделения как "Множественное выделение".
- ПервыйТипВыделения = ТипОбласти(Selection.Areas(1)): Определяется тип первой области в выделении с использованием функции ТипОбласти и сохраняется в переменной ПервыйТипВыделения.
- ВыбранныйТипВыделения = ПервыйТипВыделения: Инициализируется переменная ВыбранныйТипВыделения значением типа первой области.
- Set ДиапазонСоединений = Selection.Areas(1): Создается объединенный диапазон, начиная с первой области, чтобы избежать двойного подсчета при последующих итерациях.
- For Each Area In Selection.Areas: Запускается цикл по всем областям в выделении.
- ТекущийТипВыделения = ТипОбласти(Area): Определяется тип текущей области с использованием функции ТипОбласти и сохраняется в переменной ТекущийТипВыделения.
- If ТекущийТипВыделения = "Блок" Then КоличествоБлоков = КоличествоБлоков + 1: Если текущая область является блоком, увеличивается счетчик блоков.
- Set ДиапазонСоединений = Union(ДиапазонСоединений, Area): Обновляется объединенный диапазон, добавляя текущую область.
- If ТекущийТипВыделения <> ПервыйТипВыделения Then ВыбранныйТипВыделения = "Смешанный": Если текущий тип выделения не совпадает с типом первой области, тип выделения устанавливается как "Смешанный".
- Next Area: Завершение цикла по областям.
- For Each Area In ДиапазонСоединений.Areas: Запускается цикл по всем областям в объединенном диапазоне.
- Select Case ТипОбласти(Area): Начало выбора в зависимости от типа текущей области.
- В блоках Case: Для каждого типа области (Строка, Столбец, Рабочий лист, Блок) выполняются соответствующие действия, такие как подсчет количества строк, столбцов и блоков.
- Next Area: Завершение цикла по объединенным областям.
- КоличествоЯчеек = ДиапазонСоединений.CountLarge: Подсчет общего количества ячеек в объединенном диапазоне.
Для ясности: процедура ОписаниеОбластей и функция ТипОбласти, находятся в одном модуле.