2017-10-18 8 views
0

J'ai un code VBA qui compare les dates de l'entrée de l'utilisateur avec les dates actuelles et remplit l'arrière-plan par la couleur appropriée. tout ça fonctionne bien.vba Excel comment vérifier si la cellule n'est pas vide et colorer la ligne entière?

maintenant i nécessité de rendre le système pour vérifier si la cellule dans la colonne F de la ligne sélectionnée est non vide i besoin de la colonne de couleur D, E, F de couleur grise.

code:

Private Sub CommandButton1_Click() 

    Dim i As Integer 

    For i = Range("C5000").End(xlUp).Row To 2 Step -1 'Range upto 5000, chnge this as per your requirment' 

     If IsEmpty(Cells(i, 3)) Then 
      Cells(i, 3).Interior.Color = xlNone 

     ElseIf (VBA.CDate(Cells(i, 3)) - VBA.Date()) < 0 Then 
      Cells(i, 3).Interior.Color = vbGreen 

     ElseIf (VBA.CDate(Cells(i, 3)) - VBA.Date()) = 0 Then 
      Cells(i, 3).Interior.Color = vbYellow 

     ElseIf (VBA.CDate(Cells(i, 3)) - VBA.Date()) >= 1 And (VBA.CDate(Cells(i, 3)) - VBA.Date()) <= 4 Then 
      Cells(i, 3).Interior.Color = vbRed 

     ElseIf (VBA.CDate(Cells(i, 3)) - VBA.Date()) >= 5 And (VBA.CDate(Cells(i, 3)) - VBA.Date()) <= 10 Then 
      Cells(i, 3).Interior.Color = vbCyan 

     Else 
      Cells(i, 3).Interior.ColorIndex = xlNone 

     End If 

    Next 

End Sub 

je vais apprécier toute l'aide

+0

utilisation de mise en forme conditionnelle – Rosetta

+0

@Rosetta pas i besoin d'ajouter dans mon code –

+0

'si les cellules (i, 6) <> "" puis les cellules (i, 3) .entirerow.interior.color = vbRed '... cela résout-il votre problème? – Rosetta

Répondre

0

Vous devez également vérifier si Trim(Range("F" & i).Value) <> "" dans les critères pertinents.

J'ai aussi modifed la logique de votre code actuel est plus court et plus rapide à courir à travers (commuté à Select Case, etc.)

code

Private Sub CommandButton1_Click() 

Dim i As Long 
Dim NumofDays As Long 

For i = Range("C5000").End(xlUp).Row To 2 Step -1 'Range upto 5000, chnge this as per your requirment' 
    Cells(i, 3).Interior.Color = xlNone ' set as inital color, only change if all criterias are met 

    NumofDays = CDate(Cells(i, 3)) - Date 

    Select Case NumofDays 
     Case Is < 0 
      Cells(i, 3).Interior.Color = vbGreen 

     Case 0 
      Cells(i, 3).Interior.Color = vbYellow 

     Case 1 To 4 
      Cells(i, 3).Interior.Color = vbRed 

     Case 5 To 10 
      Cells(i, 3).Interior.Color = vbCyan 

    End Select 

    ' your 2nd criteria to color the entire row if "F" is not empty 
    If Trim(Range("F" & i).Value) <> "" Then Range("D" & i & ":F" & i).Interior.Color = ... ' selectyourcolor 
Next i 

End Sub 
+0

je ne veux pas faire toute la ligne de couleur verte ou rouge ...si je veux juste remplir la colonne ** D, E, F ** avec une couleur grise et le reste de la colonne reste comme il est dans mon code ... je vais modifier ma question –

+0

@ Dany7elo voir le code édité, remplacer la partie que j'ai écrit '... 'selectyourcolor' avec la couleur que vous voulez mettre là –

+0

votre code fonctionne mais a encore un problème qui est même si la cellule (i, 3) est vide la cellule sera colorée vert .. .. CE QUE JE VEUX EST si le (i, 3) est vide ne doit pas être colorié –

0

Mise en forme conditionnelle est plus facile, juste a few clicks.

  1. Commencez par sélectionner les cellules de la couleur d'arrière-plan dont vous voulez changer.
  2. Créer une nouvelle règle de mise en forme en cliquant sur Mise en forme conditionnelle> Nouvelle règle ... sur l'onglet Accueil. Dans l'onglet Accueil, cliquez sur Formatage conditionnel> Nouvelle règle ... Dans la boîte de dialogue "Nouvelle règle de formatage" qui s'ouvre, choisissez l'option "Utiliser une formule pour déterminer les cellules à formater" et entrez la formule suivante dans les « valeurs de format où cette formule est vrai » champ: = $ C2> 4
  3. Ouvrir la boîte de dialogue « nouvelle mise en forme règle » et entrez la formule nécessaire. Au lieu de C2, vous entrez un signe cellule qui contient la valeur que vous voulez chèque dans votre table et mettez le numéro que vous avez besoin au lieu de 4. Et naturellement , vous pouvez utiliser moins (<) ou l'égalité (=) de telle sorte que vos formules liront = $ C2 < 4 et = $ C2 = 4, respectivement.
  4. En outre, prêter attention au signe de dollar $ avant l'adresse de la cellule, vous devez l'utiliser pour garder la lettre de la même colonne lorsque la formule est copiée sur la ligne. En fait, c'est ce qui fait le tour et applique le formatage à la ligne entière en fonction d'une valeur dans une cellule donnée.
  5. Cliquez sur le bouton "Format ..." et passez à l'onglet Remplissage pour choisir la couleur d'arrière-plan. Si les couleurs par défaut ne suffisent pas, cliquez sur le bouton « Plus de couleurs ... » pour choisir celui à votre goût, puis cliquez sur OK deux fois.