0
votes

Besoin de colorer cinq cellules différentes à droite d'une cellule si une condition est remplie pour une plage spécifique de cellules

Je suis nouveau à VBA, donc toute aide est grandement appréciée. Pour une gamme spécifique de cellules, j'ai si des déclarations. Donc, pour A25: A31 FORT> Si Cellules.Value = 1 code>, je veux des cellules (x, 4) (x, 7) (x, 10) (x, 10) (x, 10) (x, 13) strong> dans la même rangée que la condition est remplie pour tous avoir la même couleur d'arrière-plan. J'ai essayé de compenser mais cela ne fonctionne que pour une sélection de décalage non multiple. Voici mon code:

If cell.Value = "1" Then cell.Offset(0, 1 & 4 & 7 & 10).Cells.Interior.Color = Range("B12").Interior.Color


1 commentaires

Basé sur votre description de votre problème, vous pouvez utiliser le formatage conditionnel plutôt que VBA.


3 Réponses :


0
votes

Vous pouvez essayer ceci:

Option Explicit
Sub Test()

    Dim C As Range
    With ThisWorkbook.Sheets(1) 'change this for the name of your sheet
        For Each C In .Range("A25:A31")
            If C = 1 Then
                Union(C, .Cells(C.Row, 4), .Cells(C.Row, 7), .Cells(C.Row, 10), .Cells(C.Row, 13)).Interior.Color = 2 'whatever colour you need
            End If
        Next C
    End With

End Sub


1 commentaires

Heureux de l'aide. Marquez-le comme réponse afin que les autres puissent le trouver.



0
votes
Dim v 
Set Rng1 = Range("A25:A31")
Set Rng2 = Range("B25:B31")

For Each cell In Rng1.Cells
    v = cell.Value

    Select Case v
        Case 1,2,3,4,5: 
            cell.EntireRow.Range("D1,G1,J1,M1").Interior.Color = _
                  Range("B11").Offset(v, 0).Interior.Color
    End Select

Next Cell
Note the Range() is relative to EntireRow, so as written it will always operate on that row.

0 commentaires

0
votes

Je suis d'accord avec ce que @johncoleman a commenté, mais si vous voulez VBA, je pense que c'est ce que vous recherchez. Mais @timwilliams est plus avancé.

Sub ColorCells()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
    For Each cel In ws.Range("A25:A31")
        If cel.Value = 1 Then
            cel.Resize(, 2).Interior.Color = Range("B12").Interior.Color
            cel.Offset(, 3).Interior.Color = Range("B12").Interior.Color
            cel.Offset(, 6).Interior.Color = Range("B12").Interior.Color
            cel.Offset(, 9).Interior.Color = Range("B12").Interior.Color

        ElseIf cel.Value = 2 Then
            cel.Resize(, 2).Interior.Color = Range("B13").Interior.Color
            cel.Offset(, 3).Interior.Color = Range("B13").Interior.Color
            cel.Offset(, 4).Interior.Color = Range("B13").Interior.Color
            cel.Offset(, 9).Interior.Color = Range("B13").Interior.Color

        ElseIf cel.Value = 3 Then
            cel.Resize(, 2).Interior.Color = Range("B14").Interior.Color
            cel.Offset(, 3).Interior.Color = Range("B14").Interior.Color
            cel.Offset(, 6).Interior.Color = Range("B14").Interior.Color
            cel.Offset(, 9).Interior.Color = Range("B14").Interior.Color

        ElseIf cel.Value = 4 Then
            cel.Resize(, 2).Interior.Color = Range("B15").Interior.Color
            cel.Offset(, 3).Interior.Color = Range("B15").Interior.Color
            cel.Offset(, 6).Interior.Color = Range("B15").Interior.Color
            cel.Offset(, 9).Interior.Color = Range("B15").Interior.Color

        ElseIf cel.Value = 5 Then
            cel.Resize(, 2).Interior.Color = Range("B16").Interior.Color
            cel.Offset(, 3).Interior.Color = Range("B16").Interior.Color
            cel.Offset(, 6).Interior.Color = Range("B16").Interior.Color
            cel.Offset(, 9).Interior.Color = Range("B16").Interior.Color
        End If
    Next cel
End Sub


0 commentaires