Appel et utilisation du sélecteur de couleurs avec VBA

 

Lors de la création d’outils et d’applications basés sur Excel, il est souvent utile pour l’utilisateur de sélectionner une couleur. Bien qu’il soit possible de créer un UserForm personnalisé, le natif d’Excel Couleur la fenêtre est plus que adaptée à la plupart des circonstances.

Sélecteur de couleurs natif d’Excel:

Norme de sélecteur de couleurs Sélecteur de couleur personnalisé

Pour montrer le Couleur fenêtre, vous pourriez penser que nous pourrions utiliser l’enregistreur de macros, mais cela ne nous donne pas tout à fait ce dont nous avons besoin. Le code enregistré affichera les couleurs sélectionnées, mais pas l’action d’afficher le Couleurs la fenêtre.

Code macro enregistré – le sélecteur de couleur n’affiche pas:

 With Selection.Interior
     .Pattern = xlSolid
     .PatternColorIndex = xlAutomatic
     .Color = 3166746
     .TintAndShade = 0
     .PatternTintAndShade = 0
 End With

Cet article fournit le code VBA requis pour appeler le Couleurs et appliquez la sélection de l’utilisateur.

Utilisation de la boîte de dialogue Modifier la couleur

Le code VBA pour appeler le Couleur la fenêtre est simple.

Chaque fenêtre dans Excel a son propre paramètre de dialogue qui peut être appelé. Dactylographie Application.Dialogs ( dans Visual Basic Editor affichera la liste des boîtes de dialogue disponibles.

Sélecteur de couleurs - Options de la boîte de dialogue

Chacune de ces fenêtres peut être appelée. Le code ci-dessous ouvrira la fenêtre Gestionnaire de compléments.

Application.Dialogs(xlDialogAddinManager).Show

Pour appeler le Couleur Fenêtre que nous référencerions xlDialogEditColor au lieu de xlDialogAddinManager.

le xlDialogEditColor L’option nécessite un argument. Il y a 56 positions de couleur disponibles dans Excel; lors de l’appel de la fenêtre Couleur, il est nécessaire d’indiquer la position de couleur à modifier. Le code ci-dessous montre comment modifier la douzième position de couleur.

Application.Dialogs(xlDialogEditColor).Show (12)

L’utilisation d’un numéro de position supérieur à 56 entraînera une erreur:
Il est acceptable de fournir l’argument de position de couleur unique, mais il peut être préférable de définir la valeur de couleur par défaut lorsque la fenêtre s’ouvre.

Application.Dialogs(xlDialogEditColor).Show 1, 26, 82, 48

Le code ci-dessus définit la position de couleur 1 sur la couleur avec la valeur RVB de

Cette couleur est un vert foncé (juste au cas où vous vous poseriez la question).

le Couleur La fenêtre a deux onglets, Standard et Personnalisé (voir les images en haut de cet article). Si le code de couleur RVB correspond à une couleur de l’onglet Standard, l’onglet Standard s’affiche, sinon l’onglet Personnalisé s’affiche.

Générez un code VBA précis en quelques secondes avec AutoMacro

AutoMacroExample

AutoMacro est un puissant générateur de code VBA qui est livré avec une bibliothèque de code étendue et de nombreux autres outils et utilitaires permettant de gagner du temps.

Que vous soyez un codeur expérimenté cherchant à gagner du temps ou un débutant essayant simplement de faire fonctionner les choses, AutoMacro est l’outil qu’il vous faut.

 

LE code ci-dessous, qui doit être utilisé dans un module standard:

  • Obtenez le code couleur d’une cellule avec la plage nommée de RGBColor
  • Attribuez le code couleur à une variable appelée FullCode couleur
  • Utilisez des formules pour diviser le code couleur en ses composants rouge, vert et bleu
  • Afficher la boîte de dialogue Modifier la couleur, en définissant la valeur par défaut sur les valeurs Rouge, Vert et Bleu ci-dessus
  • En cliquant D’accord, la couleur sélectionnée est affectée au FullCode couleur variable
  • La cellule nommée RGBColor est mis à jour avec le nouveau code couleur du FullColorCode variable.
Sub ColorDialog()

'Create variables for the color codes
Dim FullColorCode As Long
Dim RGBRed As Integer
Dim RGBGreen As Integer
Dim RGBBlue As Integer

'Get the color code from the cell named "RGBColor"
FullColorCode = Range("RGBColor").Interior.Color

'Get the RGB value for each color (possible values 0 - 255)
RGBRed = FullColorCode Mod 256
RGBGreen = (FullColorCode  256) Mod 256
RGBBlue = FullColorCode  65536

'Open the ColorPicker dialog box, applying the RGB color as the default
If Application.Dialogs(xlDialogEditColor).Show _
    (1, RGBRed, RGBGreen, RGBBlue) = True Then

    'Set the variable RGBColorCode equal to the value
    'selected the DialogBox
    FullColorCode = ActiveWorkbook.Colors(1)
    
    'Set the color of the cell named "RGBColor"
    Range("RGBColor").Interior.Color = FullColorCode

Else
   
    'Do nothing if the user selected cancel

End If

End Sub

Adapter le code

L’exemple ci-dessus utilise une cellule de feuille de calcul pour contenir la couleur. Il est possible d’adapter cette technique à tout objet avec un .Couleur propriété. Cela ne se limite pas aux feuilles de calcul, mais à de très nombreux objets du modèle d’objet VBA.

N’oubliez pas:

Si vous avez trouvé cet article utile ou si vous avez une meilleure approche, veuillez laisser un commentaire ci-dessous.

Avez-vous besoin d’aide pour l’adapter à vos besoins?

Je suppose que les exemples de cet article ne correspondaient pas exactement à votre situation. Nous utilisons tous Excel différemment, il est donc impossible d’écrire un article qui répondra aux besoins de chacun. En prenant le temps de comprendre les techniques et principes de cet article (et ailleurs sur ce site) vous devriez pouvoir l’adapter à vos besoins.

N’y allez pas encore, il y a beaucoup plus à apprendre sur comment-supprimer. Consultez les derniers articles:

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *