Как изменить цвета по умолчанию, используемые в коде VBA / результате макроса (красный, зеленый) - PullRequest
0 голосов
/ 06 декабря 2010

Я использую следующий код VBA для изменения цвета строк в моей электронной таблице каждый раз, когда изменяется значение в столбце A (чтобы все записи с одинаковым значением в столбце A были сгруппированы по цвету. Электронная таблица отсортирована по столбцу А уже, так что элементы уже сгруппированы, мне просто нужно было их раскрасить).

В любом случае, когда я запускаю этот макрос, строки окрашиваются в красный и зеленый цвета (которые для этой цели являются очень яркими и подавляющими). Мне нужно что-то более тонкое ..

Как мне это изменить? Или я могу указать в своем коде VBA использование определенных цветов по rgb или по цветовому индексу? {Я использую Excel 2007}

Sub colorize() 

Dim r As Long, val As Long, c As Long 

r = 1 
val = ActiveSheet.Cells(r, 1).Value 
c = 4 

For r = 1 To ActiveSheet.Rows.Count 
    If IsEmpty(ActiveSheet.Cells(r, 1).Value) Then 
        Exit For 
    End If 

    If ActiveSheet.Cells(r, 1).Value <> val Then 
        If c = 3 Then 
             c = 4 
        Else 
            c = 3 
        End If 
    End If 

    ActiveSheet.Rows(r).Select 
    With Selection.Interior 
        .ColorIndex = c 
        .Pattern = xlSolid 
    End With 

    val = ActiveSheet.Cells(r, 1).Value 
Next 

End Sub 

Ответы [ 3 ]

3 голосов
/ 06 декабря 2010

Запустите эту программу (кредиты здесь)

Sub colors56()
'57 colors, 0 to 56
  Application.ScreenUpdating = False
  Application.Calculation = xlCalculationManual   'pre XL97 xlManual
Dim i As Long
Dim str0 As String, str As String
For i = 0 To 56
  Cells(i + 1, 1).Interior.ColorIndex = i
  Cells(i + 1, 1).Value = "[Color " & i & "]"
  Cells(i + 1, 2).Font.ColorIndex = i
  Cells(i + 1, 2).Value = "[Color " & i & "]"
  str0 = Right("000000" & Hex(Cells(i + 1, 1).Interior.Color), 6)
  'Excel shows nibbles in reverse order so make it as RGB
  str = Right(str0, 2) & Mid(str0, 3, 2) & Left(str0, 2)
  'generating 2 columns in the HTML table
  Cells(i + 1, 3) = "#" & str & "#" & str & ""
  Cells(i + 1, 4).Formula = "=Hex2dec(""" & Right(str0, 2) & """)"
  Cells(i + 1, 5).Formula = "=Hex2dec(""" & Mid(str0, 3, 2) & """)"
  Cells(i + 1, 6).Formula = "=Hex2dec(""" & Left(str0, 2) & """)"
  Cells(i + 1, 7) = "[Color " & i & ")"
Next i
done:
  Application.Calculation = xlCalculationAutomatic  'pre XL97 xlAutomatic
  Application.ScreenUpdating = True
End Sub

Пример вывода:

alt text

0 голосов
/ 08 декабря 2010

Оказывается, все, что мне нужно было сделать, это изменить несколько цифр в коде, который я разместил в своем вопросе.Я выделил числа, которые мне пришлось изменить.Эти цифры соответствуют цвету ID (например, что положил Belisarious).ПРИМЕЧАНИЕ. Я должен был поставить апострофы, чтобы код VBA не распознавался как код VBA (потому что, если это так, он не выделяет цифры).Для получения правильного кода см. Исходный вопрос.

Dim r As Long, val As Long, c As Long

'r = 1
' val = ActiveSheet.Cells (r, 1) .Value
'c = 4

' Для r = 1 до ActiveSheet.Rows.Count
If IsEmpty (ActiveSheet.Cells (r, 1) .Value)Тогда
Выход для
Конец, если

'Если ActiveSheet.Cells (r, 1). Значение <> val Тогда
Если c = 3 Тогда
c = 4
Остальное
c = 3
Конец если
Конец если

ActiveSheet.Rows(r).Select  
With Selection.Interior  
    .ColorIndex = c  
    .Pattern = xlSolid  
End With  

val = ActiveSheet.Cells(r, 1).Value  

Дальше

End Sub

0 голосов
/ 08 декабря 2010

Вы можете настроить цветовую палитру по коду, я думаю, что страница здесь ответит на ваш вопрос: http://www.databison.com/index.php/excel-color-palette-and-color-index-change-using-vba/

Sub change_palette_color
    dim color_index as long
    color_index = 10
    ActiveWorkbook.Colors(color_index) = RGB(128, 128, 128)
End sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...