Как сгруппировать листы по цвету ярлычка

Что делает макрос: Многие из нас хотят сгруппировать листы по цвету, чтобы визуально увидеть, что данные в определенной закладке каким-то образом связаны с другой вкладкой, потому что обе имеют один и тот же цвет. Данный макрос облегчает эту функцию.

Как макрос работает

Excel присваивает номер индекса для каждого цвета. Светло-желтый цвет имеет порядковый номер 36, в то время как цвет темно-бордовый имеет порядковый номер 42. Данный макрос перебирает листы в книге, сопоставляя индексы. Цвет вкладки текущего листа, такой же что и предыдущий. Если предыдущий лист имеет тот же номер индекса цвета, что и текущий лист, макрос перемещает текущий лист перед ним. Таким образом, все итерации сделаны, все листы сгруппированы вместе на основе их закладке цветов.

Код макроса

Sub SgruppirovatListiPoCvetu()
'Шаг 1: Объявляем переменные
Dim CurrentSheetIndex As Integer
Dim PrevSheetIndex As Integer
'Шаг 2: Устанавливаем начальный пункт и начинаем цикл
For CurrentSheetIndex = 1 To Sheets.Count
For PrevSheetIndex = 1 To CurrentSheetIndex - 1
'Шаг 3: Сравниваем индекс цвета текущего листа с предыдущим
If Sheets(PrevSheetIndex).Tab.ColorIndex = _
Sheets(CurrentSheetIndex).Tab.ColorIndex Then
'Шаг 4: Если индекс цвета предыдущего листа равен показателю цвета 'текущего листа переместить текущий лист перед предыдущим
Sheets(PrevSheetIndex).Move _
Before:=Sheets(CurrentSheetIndex)
End If
'Шаг 5: Возвращаемся в п.2
Next PrevSheetIndex
Next CurrentSheetIndex
End Sub

Как работает это код

  1. Шаг 1 объявляет две переменные. CurrentSheetIndex содержит номер индекса для текущей итерации листа, а переменная PrevSheetIndex содержит номер индекса для предыдущей
    итерации листа.
  2. Шаг 2 начинает итерации счетчика для обеих переменных. Обратите внимание, что счетчик для PrevSheetIndex одно число за CurrentSheetIndex. После того, как счетчики установлены, то макрос начинает цикл.
  3. На шаге 3, макрокоманда проверяет, является ли показатель цвета предыдущего листа таким же, как и у текущего листа. Обратите внимание на использование свойства Tab.ColorIndex.
  4. Шаг 4 достигается только, если индекс цвета предыдущего листа равен показателю цвета текущего листа. На этом этапе, макрокоманда используется метод Move для перемещения текущего листа перед предыдущим листом.
  5. На шаге 5, макрокоманда переходит обратно к началу цикла. Каждая итерация приращений цикла обоих переменных до одного числа до последнего листа прикосновении. После того как все итерации закончились, макрос заканчивается.

Как использовать

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши personal.xlb в окне Project.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код во вновь созданном модуле.

Оцените статью
Добавить комментарий