Parece que essas opções de formatação foram implementadas de maneira um pouco estranha no Excel 2010 e 2013:
- A cor da linha e as propriedades são definidas como o código de macro as registrou, usando o objeto
Series.Format
e seus filhos (Fill
,Glow
,Shadow
, etc. [1]). - A cor de preenchimento do marcador para todos os marcadores > na série é definida com
Series.MarkerBackgroundColor
ouSeries.MarkerBackgroundColorIndex
. Da mesma forma, a cor da linha do marcador para todos os marcadores da série é definida comSeries.MarkerForegroundColor
ouSeries.MarkerForegroundColorIndex
. [2] - Como alternativa, o preenchimento do marcador e as cores da linha podem ser definidos individualmente por meio dos objetos
Series.Points(n).Format.Fill
eSeries.Points(n).Format.Line
. No entanto , pelo menos no Excel 2013, alterarSeries.Points(n).Format.Line.ForeColor
também altera a cor do segmento de linha imediatamente anterior o ponto de dados relevante.
As propriedades de # 2 parecem com as sobras do DOM anterior do Excel, embora com funcionalidade expandida em termos de .MarkerForegroundColor
e .MarkerBackGroundColor
aceitando qualquer valor RGB. As do nº 3 são consistentes com o novo nível de configurabilidade encontrado no Excel 2010 e mais recente, mas aparecem com erros. Um aspecto irritante do bugginess é que parece que as cores da linha do marcador são problematicamente entrelaçadas com a cor da linha da série - até onde eu posso dizer, é impossível alterar a cor da linha sem afetar as cores da linha do marcador, e versa. Em particular, parece que é impossível obter uma cor de linha de série uniforme, aplicando também variações ponto-a-ponto na cor da linha de marcação usando o VBA. (Novamente, estou testando aqui no Excel 2013; 2010 pode se comportar de maneira diferente.)
Em qualquer caso, em situações em que ajustes de cores ponto-a-ponto não são necessários, uma função auxiliar como a seguinte pode ser útil para fazer alterações na cor da linha sem afetar o preenchimento do marcador ou as cores da linha (aqui newLineColor é especificado como um valor longo de RGB [3]):
Sub ChangeLineColorOnly(srs as Series, newLineColor as Long)
Dim oldMkrFill as Long, oldMkrLine as Long
' Store old marker colors
oldMkrFill = srs.MarkerBackgroundColor
oldMkrLine = srs.MarkerForegroundColor
' Set the series ForeColor
srs.Format.Fill.ForeColor.RGB = newLineColor
' Restore the old marker colors
srs.MarkerBackgroundColor = oldMkrFill
srs.MarkerForegroundColor = oldMkrLine
End Sub
Uma versão alternativa da função auxiliar acima poderia ser facilmente escrita para acomodar as cores especificadas como uma SchemeColor [4], ou para armazenar apenas a cor da linha do marcador, etc.
Quanto à .ForeColor.Brightness
glitch, presumivelmente foi resultado da recodificação descuidada da funcionalidade 'Gravar Macro' no desenvolvimento da versão do Excel 2010. Ele provavelmente só deveria ter sido inserido no código VBA gravado para certos tipos de gráficos, onde .Brightness
é um atributo válido a ser modificado.