Страницы

среда, 30 сентября 2015 г.

Пользовательские функции Excel Часть 2-2 Вариант 0

Необходимо создать макрос (процедуру-подпрограмму), обеспечивающий следующие действия:
- отмену ранее существующей заливки ячеек таблицы;
- заливку красным цветом ячеек таблицы с максимальным месячным выпуском продукции (по всей таблице).
Как сказано в описании (ссылка внизу), создаем макрос и пишем текст:

Sub Заливка_ячеек()
Dim rng As Range
Dim c As Integer
Dim r As Integer
Dim max As Integer
'установка пользовательского диапазона
'для определения количества занятых строк
Set rng = ActiveSheet.UsedRange
'отмена предыдущей заливки
Range(rng.Cells(3, 3), rng.Cells(rng.Rows.Count, 8)).Interior.Pattern = xlNone
'первоначальный максимум равен значению первой ячейки диапазона
max = Cells(3, 3)
'поиск максимума по всем ячейкам с данными выпуска
For r = 3 To rng.Rows.Count
    For c = 3 To 8
        If max < Cells(r, c) Then max = Cells(r, c)
    Next c
Next r
'если текущее значение равно максимальному, то
'производится заливка красным  цветом
For r = 3 To rng.Rows.Count
    For c = 3 To 8
        If max = Cells(r, c) Then Cells(r, c).Interior.Color = RGB(255, 0, 0)
    Next c
Next r
Set rng = Nothing   'Освобождение памяти
End Sub
На текущем активном листе (ActiveSheet) определяем пользовательский диапазон и дальше работаем с его ячейками, строками и столбцами. Можно было выбрать лист по номеру, то есть не ActiveSheet, а Sheets(1) – первый лист.
Дальше с помощью вложенных циклов сначала ищем максимальное значение по всем ячейкам, затем второй раз проходим все ячейки, сравнивая их с максимальным значением. Если равенство соблюдается, закрашиваем ячейку красным цветом.

Дополнительные материалы к этому сообщению

Описание, общие моменты работы и список вариантов 

Общий список всех сообщений по этой работе