2010-12-06 60 views
0

J'utilise le code VBA suivant pour changer la couleur des lignes dans ma feuille de calcul chaque fois que la valeur de la colonne A change (pour que toutes les entrées avec la même valeur dans la colonne A sera groupée par couleur.La feuille de calcul est déjà triée par colonne A donc les articles sont déjà groupés, j'avais juste besoin de les colorer).Comment modifier les couleurs de défault utilisées dans le code VBA/Résultat macro (rouge, vert)

Quoi qu'il en soit, lorsque je lance cette macro, les lignes sont colorées en rouge & (qui sont des couleurs très vives et écrasantes à cet effet). J'ai besoin de quelque chose de plus subtil ..

Comment changer cela? Ou puis-je spécifier dans mon code VBA pour qu'il utilise certaines couleurs par RVB ou indice de couleur? {J'utilise 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 

Répondre

-1

Il s'est avéré que tout ce que j'avais à faire était de changer quelques chiffres dans le code que j'ai posté dans ma question. Je en gras les numéros que j'ai dû changer. Ces chiffres correspondent à l'identifiant de couleur (comme ce que Belisarious a mis). NOTE: Je devais mettre apostrohpes pour que le code VBA ne soit pas reconnu comme code VBA (car si c'est le cas, il ne sera pas en gras les chiffres). Voir la question originale pour le code correct.

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

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

« Pour r = 1 Pour ActiveSheet.Rows.Count
Si IsEmpty (ActiveSheet.Cells (r, 1) .Value) Puis
sortie pour
End If

'Si ActiveSheet.Cells (r, 1).Valeur <> val Puis
Si c = Ensuite
c =
Else
c =
End If
End If

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

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

Suivant

End Sub

3

Exécuter ce programme (credits here)

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 

échantillon de sortie:

alt text

+0

voici ma configuration de tableur: – Jack

+0

@Colton Quelque chose est manquant dans votre commentaire –

+0

Merci belisarius, j'ai fini par comprendre avant de terminer ce commentaire et je ne voulais pas le quitter. bu tnow je ne peux pas l'enlever. – Jack