Définir la couleur d'arrière-plan pour une plage de cellules
J'ai le code VBA dans une feuille de calcul Excel. Il est utilisé pour définir la police et la couleur d'arrière-plan d'une cellule basée sur la valeur de cette cellule. Je suis en train de faire en VBA au lieu de "mise en forme Conditionnelle" parce que j'ai plus que 3 conditions. Le code est:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range, d As Range, fc As Long, bc As Long, bf As Boolean
Set d = Intersect(Range("A:K"), Target)
If d Is Nothing Then Exit Sub
For Each c In d
If c >= Date And c <= Date + 5 Then
fc = 2: fb = True: bc = 3
Else
Select Case c
Case "ABC"
fc = 2: fb = True: bc = 5
Case 1, 3, 5, 7
fc = 2: fb = True: bc = 1
Case "D", "E", "F"
fc = 2: fb = True: bc = 10
Case "1/1/2009"
fc = 2: fb = True: bc = 45
Case "Long string"
fc = 3: fb = True: bc = 1
Case Else
fc = 1: fb = False: bc = xlNone
End Select
End If
c.Font.ColorIndex = fc
c.Font.Bold = fb
c.Interior.ColorIndex = bc
c.Range("A1:D1").Interior.ColorIndex = bc
Next
End Sub
Le problème est dans le "c.La gamme" ligne. Il utilise toujours la cellule courante que "Un" et puis s'en va quatre cellules vers la droite. Je veux qu'il puisse commencer dans le "réel" de la cellule "A" de la ligne actuelle et aller à la "vraie" cellule "D" de la ligne actuelle. Fondamentalement, je veux une plage fixe et non dynamique.
Juste pour vérifier, je suppose que vous êtes inquiet au sujet de la permis à nombre de conditions, car ce seront livrés à plus que juste des utilisateurs avec xl2007?
Nous sommes à l'aide d'Excel 2003, qui semble autoriser uniquement les 3 conditions. L'utilisateur a 6 conditions de test, y compris la plage de dates qu'ils ne pouvaient pas trouver du travail dans l'assistant.
Nous sommes à l'aide d'Excel 2003, qui semble autoriser uniquement les 3 conditions. L'utilisateur a 6 conditions de test, y compris la plage de dates qu'ils ne pouvaient pas trouver du travail dans l'assistant.
OriginalL'auteur Count Boxer | 2010-04-30
Vous devez vous connecter pour publier un commentaire.
Donc
c.Range("A1:D1")
a sa propre fourchette relative.Une solution consiste à utiliser la feuille de calcul de la portée de la propriété à la place.
J'ai ajouté deux lignes vers le haut (
#added
), et changé celui du bas (#changed
).grande pêche. Résolu le problème. Permettez-moi de savoir comment il va.
Depuis que vous m'avez montré que "c.Ligne" est le numéro de la ligne actuelle, j'ai combiné les quatre dernières lignes en un seul: le ws.Range("A" & c.Ligne & ":D", & c.De ligne).L'intérieur.ColorIndex = bc merci Beaucoup.
OriginalL'auteur bernie