VBA magasin RVB de la couleur dans la variable
Je suis à la recherche de stocker une couleur RVB dans une variable dans un fichier Excel VBA projet, qui doit être utilisée pour définir la couleur d'arrière-plan de cellule différents/les plages tout au long d'une sous.
Je veux mettre de la couleur une fois dans une variable, de sorte que si je décide de le changer tout au long de j'ai seulement besoin de le faire en un seul endroit.
Cependant ma tentative ci-dessous ne fonctionne pas:
Dim clrBlue As ColorFormat
clrBlue = RGB(0, 0, 256)
Range("a2").Interior.Color = clrBlue
Range("b3").Interior.Color = clrBlue
Avec le code ci-dessus, j'obtiens une Object variable or With block variable not set
erreur d'exécution.
Je sens que je suis en train de faire quelque chose de fondamentalement mauvais! Quelqu'un peut-il suggérer ce que c'est? Cela peut-il être fait?
En l'écrivant je me rends compte que je pourrais écrire des fonctions distinctes (SetBlue
, SetRed
, SetGreen
)pour appliquer chaque couleur, mais qui se sent juste en désordre.
dim clrBlue as Long
au lieu de colorFormat
Merci, je viens de trouver le même à travers ce post (stackoverflow.com/a/1427293/1448678) - bien que pas tout à fait un doublon. Si vous postez une réponse, je vais accepter!
"je pourrais écrire des fonctions distinctes (SetBlue, SetRed, SetGreen)à appliquer à chaque couleur", Une fonction qui remplace essentiellement 1 ligne de code n'est généralement pas utile.
^ Oui je suis d'accord. Comme je l'ai dit: "malpropre"!
OriginalL'auteur Jonny | 2014-08-08
Vous devez vous connecter pour publier un commentaire.
RGB
renvoie uneLong
, de sorte que vous devez déclarerclrBlue
commeLong
au lieu deColorFormat
.Il a écrit l'explication dans un commentaire à la question ci-dessus... je vais fusionner dans la réponse.
OriginalL'auteur Tom
Comme d'autres l'ont dit, RGB() renvoie une Longue, de sorte que vous aurez besoin de l'utiliser à la place de ColorFormat. Sur un peu le même ordre d'idées, j'aime vraiment la Couleur enum en C#, et j'ai commencé à imiter que dans mes modules VBA. Vous pouvez créer votre propre enum pour stocker les valeurs des couleurs dans votre projet, en référence à la couleur avec la Couleur.Bleu.
Cela le rend également très facile de modifier une couleur, si vous décidez d'aller avec une autre nuance de bleu. Mise à jour de l'enum, et tous les endroits que vous avez utilisé la Couleur.Bleu sera mise à jour.
Exemple:
Pour obtenir le long de la valeur RVB de la valeur à la boutique, j'ai juste mis de la valeur dans la fenêtre exécution et copié la sortie.
Dans la Fenêtre exécution, tapez:
La sortie sera 14390640. Il pourrait y avoir un moyen plus facile d'obtenir la valeur.
OriginalL'auteur Eric Harlan
Je n'ai pas essayé et je ne suis pas contester les précédents commentateurs.
Je remarque que le code d'origine de l'échantillon a: clrBlue = RGB(0, 0, 256)
Le nombre le plus élevé autorisé en RVB est de 255. Que pourrait être le problème.
OriginalL'auteur RIck_R