J'ai vu de nombreux utilisateurs posant des questions à essayer de modifier les couleurs des cellules à l'aide de fonctions définies par l'utilisateur. J'ai toujours eu l'impression qu'il n'était pas possible de le faire. Je crois comprendre que une fonction définie par l'utilisateur ne peut modifier aucune propriété d'une cellule, à l'exception de la valeur de la cellule contenant la formule. Les sous-marins sont ce qui change les cellules elles-mêmes.
Cependant, lorsque vous jouez avec un certain code pour tester cela, j'ai trouvé que ce n'est pas toujours le cas. Si je saisis la fonction dans une cellule, je reçois des résultats attendus, aucune cellule ne change de couleurs. Toutefois, si j'utilise les formules> Insérez le bouton de fonction et accédez à ma formule pour l'insérer de cette façon, il fait em> les cellules ciblées. Comment est-ce possible et pourquoi la fonction a-t-elle conduit différemment lorsqu'elle est entrée. en différentes manières? p> EDIT: Ceci a été testé à l'aide d'Excel 2007 p> p>
Utilisation du code simple: p>
p>
4 Réponses :
Utilisez ce code ... juste remplacer le nom de la feuille et essayez
J'utilise Feuille de travail_change code> pour détecter la valeur de la plage de la plage de travail. Exemple.Je veux faire quelque chose lorsque la plage A1: A5 a été changée. J'utilise ci-dessous événement.
Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range(<Your working range>)) Is Nothing Then 'Define range that you want to do
'Statement here
...
End If
End Sub
Comme nous le découvrons tous tôt ou ultérieur, dans les fonctions utilisateur, vous ne pouvez pas accéder aux sous-marins qui changent directement dans votre feuille de calcul.
Essayez ceci: P>
Dim ColorMeTarget As Range, ColorMeVal As Long Public Function ColorMe(ByVal TargetRange As Range, ByVal ColVal As Long) Set ColorMeTarget = TargetRange ColorMeVal = ColVal ColorMe = ColVal End Function Public Sub ColorMeSub() Application.OnTime Now + TimeValue("00:00:05"), "ColorMeSub" If ColorMeTarget.Interior.Color <> ColorMeVal Then ColorMeTarget.Interior.Color = ColorMeVal End Sub
pourrait également essayer la méthode non-script de coloration automatique d'une cellule basée sur l'état de la cellule (aka formatage conditionnel): p>
P>
p>
<> <> / p>
Je ne connais pas la réponse à cela, mais remarquez que si vous modifiez les valeurs de cellule, cela ne changera pas la coloration même dans le cas. Donc, si vous changez de cellule A11 en 1, la cellule reste rouge.
Correct, il n'y a pas de mise à jour de la fonction elle-même. Sauf si vous revenez et réutilisez «la fonction Insérer», il sera i> Mettre à jour la valeur / la couleur.
J'ai trouvé que ce n'est pas toujours le cas. Code> True :) Avez-vous vu Ceci
La seule explication simple que je peux penser est que lorsque vous entrez directement la fonction dans la feuille de calcul, elle calculera dans le mode
edit code> (la barre de formule est toujours active). Et dans ce mode "Modifier", les autres fonctionnalités de l'Excel se mettent en halt. Dans votre cas, ce n'est pas le cas en soi. La barre de formule n'est pas non plus accessible, ce qui signifie Excel n'est pas dans le même mode "Modifier". Eh bien c'est ma compréhension et je pourrais me tromper :)
Ceci est intéressant, bien qu'il existe probablement des moyens d'atteindre vos objectifs sans essayer de pirater les limitations prévues des fonctions, comme le formatage conditionnel.
@Siddharthout Je n'avais pas encore vu ça, des choses très intéressantes. Je n'ai pas vu cette méthode spécifique indiquée sur le site Google liée. Ma meilleure estimation est qu'il est très similaire à l'utilisation de la méthode "Évaluer la formule" dans les yeux d'Excel.
@ n8. Je n'essayais même pas d'atteindre quelque chose avec cela, je veux juste tester les limitations d'Excel :)
Oui, je pensais exactement à l'application.évaluée :)