Officielle Color Navne i VBA

Excel bruger en farvepalet bestående af 56 farver. Du kan se disse farver, hvis du viser fanen i dialogboksen Formater celler Mønstre. Når du opretter makroer i VBA, kan du henvise til disse farver, ved navn, ved hjælp af konstanter.

Desværre er Excels VBA ikke konstanter defineret for hver af de 56 farver på paletten. De eneste farver, der er defineret ved navn, er medlemmer af ColorConstants klasse, og der er otte medlemmer af klassen: vbBlack, vbWhite, vbRed, vbGreen, vbBlue, vbYellow, vbMagenta og vbCyan.

I VBA kan du bruge ColorIndex ejendom til at definere, hvilken farve du vil bruge fra Excel palet. Problemet er, at ColorIndex er ikke en farve; Det er et indeks i paletten. Således er en ColorIndex 1 er den første farve i paletten, 2 er den anden og så videre. Du kan se dette i aktion ved at se på eksempelkode på denne webadresse:

http://www.ozgrid.com/VBA/ReturnCellColor.htm

Denne kode undersøger ColorIndex ejendomme til en celle og returnerer en farve navn. Navnet tilbage, er imidlertid ikke en konstant for farven; det er kun en beskrivelse af, hvad farve paletten ved at indekset synes at være.

Hvis du ønsker at indstille farven på en celle, du rent faktisk skal bruge Color ejendom. Denne egenskab gør det muligt at bruge de otte VBA farve konstanter tidligere nævnt. Det bare sådan, at hvis du bruger disse Color ejendom for at indstille den indvendige farve af en celle, vil du opdage, at de otte navngivne farver svarer til ColorIndex værdier på 1 til 8. Følgende makro illustrerer dette pænt:

Sub CheckColors ()
Dim arr8Colors As Variant
Dim i As Integer

arr8Colors = array (_
vbBlack, vbWhite, vbRed, vbGreen, _
vbBlue, vbYellow, vbMagenta, vbCyan)
For i = 0 til 7
Selection.Offset (i, 0) .Interior.Color = arr8Colors (i)
Selection.Offset (i, 1) .Value = Selection.Offset (i, 0) .Interior.ColorIndex
Næste i
End Sub

Denne korrespondance for de første otte værdier mellem Farve og ColorIndex bør kun tages som et artefakt af historie, der går tilbage til de dage, hvor Excel kun tilladt dig at bruge otte farver-otte farver, der er defineret med VBA konstanter. Hvis du vil angive en anden farve til en celle, skal du bruge RGB-funktionen til at angive Color ejendom, som vist her:

Selection.Interior.Color = RGB (128, 64, 255)

RGB-funktionen kan du angive de røde, grønne og blå komponenter i enhver farve. Hver komponent kan variere i værdi fra 0 til 255.

ExcelTips er din kilde til omkostningseffektiv Microsoft Excel træning. Dette tip (2778) gælder for Microsoft Excel 97, 2000, 2002, og 2003.


© 2020 Zajacperrone.com | Contact us: webmaster# zajacperrone.com