Профессиональные приемы работы в Microsoft Excel

Пожалуйста, войдите или зарегистрируйтесь.


Расширенный поиск  

Новости:

Читайте новые сообщения форума форума в RRS-агрегаторах

Автор Тема: Окрашивание строк в 2 цвета  (Прочитано 1123 раз)

0 Пользователей и 1 Гость просматривают эту тему.

yuldash

  • Новичок
  • *
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 4

Добрый день.
Задача такая. в таблице Excel в 4м столбце только 2 типа значений. 1 и 2. Надо покрасить строки со значением 1 в зеленый, а строки со значением 2 в желтый. Надо прописать в макросе.
у меня примерно получается, но окрашивает один раз и останавливается.
вот пример 
Sub Макрос1()
Dim rFoundRng As Range

    Set rFoundRng = Columns(4).Find(1)
    If Not rFoundRng Is Nothing Then
   Range(Cells(rFoundRng.Row, 1), Cells(rFoundRng.Row, 14)).Interior.ColorIndex = 6
    End If
   
Set rFoundRng = Columns(4).Find(2)
    If Not rFoundRng Is Nothing Then
   Range(Cells(rFoundRng.Row, 1), Cells(rFoundRng.Row, 14)).Interior.ColorIndex = 4
    End If
End Sub
« Последнее редактирование: 11.11.2015, 14:56:19 от vikttur »
Записан

iron priest

  • Глобальный модератор
  • Старожил
  • *****
  • Уважение: +34/-0
  • Оффлайн Оффлайн
  • Сообщений: 766
  • почётный флудераст
Re: Окрашивание строк в 2 цвета
« Ответ #1 : 11.11.2015, 13:34:36 »

и зачем это делать через макрос?
Записан

yuldash

  • Новичок
  • *
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 4
Re: Окрашивание строк в 2 цвета
« Ответ #2 : 11.11.2015, 13:40:14 »

Слишком большая таблица
« Последнее редактирование: 11.11.2015, 14:55:48 от vikttur »
Записан

iron priest

  • Глобальный модератор
  • Старожил
  • *****
  • Уважение: +34/-0
  • Оффлайн Оффлайн
  • Сообщений: 766
  • почётный флудераст
Re: Окрашивание строк в 2 цвета
« Ответ #3 : 11.11.2015, 13:43:36 »

мульён?
Записан

yuldash

  • Новичок
  • *
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 4
Re: Окрашивание строк в 2 цвета
« Ответ #4 : 11.11.2015, 13:48:20 »

мульён?
Да.
попытался цикл организовать - не получилось
Записан

cheshiki1

  • Глобальный модератор
  • Ветеран
  • *****
  • Уважение: +92/-0
  • Оффлайн Оффлайн
  • Сообщений: 1 006
Re: Окрашивание строк в 2 цвета
« Ответ #5 : 11.11.2015, 17:33:58 »

цикл, на мульёне не скажу как себя поведет, опыта мало.
Dim i%
For i = 2 To Cells(Rows.Count, 4).End(xlUp).Row
    Range(Cells(i, 1), Cells(i, 14)).Interior.ColorIndex = Choose(Cells(i, 4), 4, 6)
Next
Записан

vikttur

  • Глобальный модератор
  • Ветеран
  • *****
  • Уважение: +50/-0
  • Оффлайн Оффлайн
  • Сообщений: 1 015
Re: Окрашивание строк в 2 цвета
« Ответ #6 : 11.11.2015, 18:07:12 »

С массивом быстрее.
Сначала формируем диапазоны для заливки, в конце одним махом заливаем все строки:
Sub RngColor()
Dim ArrData
Dim rRng1 As Range, rRng2 As Range
Dim lRws As Long
Dim i As Long
    With ActiveSheet
        lRws = .UsedRange.Rows.Count
        If lRws < 2 Then Exit Sub
        ArrData = Range("D1:D" & lRws).Value ' значения столбца 4 в массив
       
        For i = 1 To lRws
            Select Case ArrData(i, 1) ' по значениям
                Case 1
                    If rRng1 Is Nothing Then
                        Set rRng1 = .Range(.Cells(i, 1), .Cells(i, 14)) ' формируем диапазон
                    Else
                        Set rRng1 = Union(rRng1, .Range(.Cells(i, 1), .Cells(i, 14))) 'пополняем диапазон
                    End If
                Case 2
                    If rRng2 Is Nothing Then
                        Set rRng2 = .Range(.Cells(i, 1), .Cells(i, 14))
                    Else
                        Set rRng2 = Union(rRng2, .Range(.Cells(i, 1), .Cells(i, 14)))
                    End If
            End Select
        Next i
   
        Application.ScreenUpdating = False
        .UsedRange.Interior.Pattern = xlNone ' удаление предыдущей заливки
        If Not rRng1 Is Nothing Then rRng1.Interior.ColorIndex = 6 ' красим диапазоны
        If Not rRng2 Is Nothing Then rRng2.Interior.ColorIndex = 4
        Application.ScreenUpdating = True
    End With
End Sub
В таком варианте обращения к листу минимальны -  только для получения данных в массив и для массовой заливки двух диапазонов.
Записан

yuldash

  • Новичок
  • *
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 4
Re: Окрашивание строк в 2 цвета
« Ответ #7 : 12.11.2015, 07:15:34 »

Спасибо, Попробую.
А как сделать, чтобы он автоматически все сделал?
например, я вбил новую строку, а он автоматически запускается
Записан

cheshiki1

  • Глобальный модератор
  • Ветеран
  • *****
  • Уважение: +92/-0
  • Оффлайн Оффлайн
  • Сообщений: 1 006
Re: Окрашивание строк в 2 цвета
« Ответ #8 : 12.11.2015, 08:27:24 »

посмотрите про событие Worksheet_Change
Записан
 



Темы без ответов

24.01.2020 14:03 На диаграмме Ганта несоответствие оси Y 1130
09.08.2019 14:09 Макрос для заполнения таблиц через форму 2879
18.07.2019 16:02 Рассылка почты из Excel при помощи почтовой программы TheBAT! 2495
09.07.2019 20:39 Кредит с уменьшением периода выплат 2592
28.05.2019 21:09 Сделать несколько скриптов для рабочей таблицы 3305
05.03.2019 17:00 Последовательный вывод таблиц Excel в один документ Word без шаблона 3198
05.03.2019 09:29 Нежелательные изменение размеров колонтитула при редактировании 2958
07.02.2019 01:36 Как удалить дубликаты из выпадающего связанного списка? 3120
20.01.2019 12:38 Все варианты частичного суммирования 3279
13.01.2019 12:24 Заполнение диапазона числами - в виде кластеров 2627





Яндекс цитирования msexcel.ru Яндекс.Метрика

Страница сгенерирована за 0.122 секунд. Запросов: 117.