View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Jon Peltier Jon Peltier is offline
external usenet poster
 
Posts: 6,582
Default Custom colours in charts

Excel has a palette of 56 colors. When you use RGB to define a color, Excel
uses the element in the palette which it decides is closes to the RGB you
specify.

You could assign the RGB to color in the palette, then use this color index
to color your chart element.

For example:

ActiveWorkbook.Colors(45) = RGB(144, 211, 199)
ActiveChart.SeriesCollection(1).Interior.ColorInde x = 45

- Jon
-------
Jon Peltier, Microsoft Excel MVP
Tutorials and Custom Solutions
Peltier Technical Services, Inc. - http://PeltierTech.com
_______


"DuncanL" wrote in message
...
Why is Excel ignoring my custom colours for chart lines and fills, and
picking something a bit (but not very) similar instead? Sea green is
blue,
lavender becomes grey...

This example has been cobbled together using an MS TechNet example

-------------------------------------------------------------------
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook = objExcel.Workbooks.Add()
Set objWorksheet = objWorkbook.Worksheets(1)

objWorksheet.Cells(1,1) = "Operating System"
objWorksheet.Cells(2,1) = "Windows Server 2003"
objWorksheet.Cells(3,1) = "Windows XP"
objWorksheet.Cells(4,1) = "Windows 2000"

objWorksheet.Cells(1,2) = "Number of Computers"
objWorksheet.Cells(2,2) = 545
objWorksheet.Cells(3,2) = 987
objWorksheet.Cells(4,2) = 611

objWorksheet.Cells(1,3) = "Something Else"
objWorksheet.Cells(2,3) = 432
objWorksheet.Cells(3,3) = 278
objWorksheet.Cells(4,3) = 495

objWorksheet.Cells(1,4) = "Another thing"
objWorksheet.Cells(2,4) = 832
objWorksheet.Cells(3,4) = 458
objWorksheet.Cells(4,4) = 921

Set objRange = objWorksheet.UsedRange
objRange.Select

Set colCharts = objExcel.Charts
colCharts.Add()

With objExcel.ActiveChart
.ChartType = -4100

.SeriesCollection(1).Interior.Color = RGB(144, 211, 199)
.SeriesCollection(1).Border.Color = RGB(93, 191, 173)
.SeriesCollection(1).Border.Weight = 4

.SeriesCollection(2).Interior.Color = RGB(190, 186, 218)
.SeriesCollection(2).Border.Color = RGB(140, 133, 190)
.SeriesCollection(2).Border.Weight = 4

.SeriesCollection(3).Interior.Color = RGB(251, 128, 114)
.SeriesCollection(3).Border.Color = RGB(249, 64, 43)
.SeriesCollection(3).Border.Weight = 4

End With
-------------------------------------------------------------------


The following (rubbish) HTML saved as a file will show the colours I
expect:
-------------------------------------------------------------------
<html
<body
<p style="width:100%;margin:0;padding:0;background-color:RGB(144, 211,
199);" </p
<p style="width:100%;margin:0;padding:0;background-color:RGB(93, 191,
173);" </p
<p style="width:100%;margin:0;padding:0;background-color:RGB(190, 186,
218)" </p
<p style="width:100%;margin:0;padding:0;background-color:RGB(140, 133,
190)" </p
<p style="width:100%;margin:0;padding:0;background-color:RGB(251, 128,
114)" </p
<p style="width:100%;margin:0;padding:0;background-color:RGB(249, 64,
43)" </p
</body
</html
-------------------------------------------------------------------

Suggestions welcome!