9
votes

Fonction définie par l'utilisateur pour changer la couleur d'une cellule

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.
Utilisation du code simple: xxx

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 les cellules ciblées.
Fonction de couleur cellulaire

Comment est-ce possible et pourquoi la fonction a-t-elle conduit différemment lorsqu'elle est entrée. en différentes manières?

EDIT: Ceci a été testé à l'aide d'Excel 2007


8 commentaires

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 Mettre à jour la valeur / la couleur.


J'ai trouvé que ce n'est pas toujours le cas. 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 (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 :)


4 Réponses :


4
votes

Utilisez ce code ... juste remplacer le nom de la feuille et essayez xxx


0 commentaires

0
votes

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


0 commentaires

1
votes

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


0 commentaires

0
votes

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):

mettez en surbrillance la plage souhaitée et cliquez sur

Utilisez une règle établie ou faites une nouvelle règle

Note Options des types de règles; J'ai sélectionné une pour formater simplement la plage en fonction du contenu de la cellule. Vous pouvez formater en fonction de la page. sur une formule également. Définir les conditions pour tester ... Dans ce cas, j'ai dit que la condition est quand une valeur de cellule est supérieure à 5. Cliquez ensuite sur le format et définissez le format de désir s'il s'agit d'une modification de police ou d'un ombrage de la police. cellule, etc. Ici, j'ai sélectionné pour ombrager la cellule une couleur de vert quand elle est supérieure à 5 Voici le résultat. Vous pouvez supprimer le contenu des cellules sans supprimer le jeu de formatage conditionnel pour les cellules. <> <> / p>


0 commentaires