Cómo cambiar los colors de defunction utilizados en el código VBA / Resultado de la macro (Rojo, Verde)

Estoy usando el siguiente código VBA para cambiar el color de las filas en mi spreadsheet cada vez que cambia el valor en la Columna A (para que todas las inputs con el mismo valor en la columna A se agrupen por color. La spreadsheet se ordera por columna A ya que los elementos ya están agrupados, solo los necesitaba de color).

De todos modos, cuando ejecuto esta macro las filas son de color rojo y verde (que son colors muy shinys y abrumadores para este propósito). Necesito algo más sutil …

¿Cómo cambio esto? ¿O puedo especificar en mi código VBA para que use ciertos colors por rgb o índice de color? {Estoy usando 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 

Ejecute este progtwig (créditos aquí)

 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 

Muestra de salida:

texto alternativo

Puede personalizar la paleta de colors por código, creo que la página aquí responderá a su pregunta: 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 

Resulta que todo lo que tuve que hacer fue cambiar algunos numbers en el código que publiqué en mi pregunta. En negrita los numbers que tenía que cambiar. Estos numbers corresponden a la identificación del color (como lo puso Belisarious). NOTA: tuve que poner apostrohpes para que el código VBA no se reconociera como código VBA (porque si lo está, no marcará los numbers). Vea la pregunta original para el código correcto.

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

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

'Para r = 1 a ActiveSheet.Rows.Count
Si es Vacío (ActiveSheet.Cells (r, 1) .Value) Entonces
Salir para
Terminara si

'Si ActiveSheet.Cells (r, 1) .Value <> val Then
Si c = 3 Entonces
c = 4
Más
c = 3
Terminara si
Terminara si

 ActiveSheet.Rows(r).Select With Selection.Interior .ColorIndex = c .Pattern = xlSolid End With val = ActiveSheet.Cells(r, 1).Value 

Siguiente

End Sub