Al establecer la propiedad Color por sí solo, se garantiza una coincidencia exacta. Excel 2003 solo puede manejar 56 colores a la vez. La buena noticia es que puede asignar cualquier valor de rgb a esas 56 ranuras (que se denominan ColorIndex). Cuando establece el color de una celda usando la propiedad Color, esto hace que Excel use el "ColorIndex" más cercano. Ejemplo: Establecer una celda en RGB 10,20,50 (o 3281930) hará que se establezca en el índice de color 56, que es 51,51,51 (o 3355443).
Si quiere estar seguro de que obtuvo una coincidencia exacta, necesita cambiar un ColorIndex al valor RGB que desea y luego cambiar el ColorIndex de la Celda a dicho valor. Sin embargo, debe tener en cuenta que al cambiar el valor de un índice de color, cambia el color de todas las celdas que ya utilizan ese color en el libro de trabajo. Para dar un ejemplo, Red es ColorIndex 3. Entonces, cualquier celda que haya hecho Rojo realmente haya hecho ColorIndex 3. Y si redefine ColorIndex 3 para que sea, por ejemplo, morado, su celda se volverá púrpura, pero todos los otros glóbulos rojos en el el libro de trabajo también se cambiará a morado.
Existen varias estrategias para hacer frente a esto. Una forma es elegir un índice que aún no se utiliza, o solo uno que piense que no será utilizado. Otra forma es cambiar el valor RGB del colorIndex más cercano para que su cambio sea sutil. El código que publiqué a continuación adopta este enfoque. Aprovechando el conocimiento de que se asigna el ColorIndex más cercano, asigna el valor RGB directamente a la celda (obteniendo así el color más cercano) y luego asigna el valor RGB a ese índice.
Sub Example()
Dim lngColor As Long
lngColor = RGB(10, 20, 50)
With Range("A1").Interior
.Color = lngColor
ActiveWorkbook.Colors(.ColorIndex) = lngColor
End With
End Sub
Gracias, esto también es muy útil. –