HOW TO: How do I set a cell's color?
Reference: Q0021
Article last modified on 3-Feb-2006
The information in this article applies to:
- XLL+ for Visual Studio .NET - 3, 4.1, 4.2, 4.3.1
- XLL+ for Visual Studio 6 - 3, 4.1, 4.2, 4.3.1
How do I set a cell's color?
Question
How can I set the font color and background color of a specific cell from an XLL add-in function?
Answer
To set the foreground (text) color of the current selection, use the CXlMacros::FontProperties
method, as follows:
#include <xlfuncs.h>
...
int foreColorIndex = 4; // green
if (CXlMacros::FontProperties(0, 0, 0, -1, -1, -1, -1,
foreColorIndex) != 0)
CXllApp::XlMessageBox("Failed to set fore color", 1);
To set the background color of the cells currently selected, use the XLM4
function PATTERN to set the cells to have a solid pattern with the
specified background color, thus:
int backColorIndex = 3; // red
static int xlcPatterns = (84 | 0x8000);
if (CXllApp::Excel(xlcPatterns, 4,
&CXlOper(1.0), // pattern = solid
&CXlOper(0.0), // fore color (ignored)
&CXlOper((double)backColorIndex), // specified cell color
&CXlOper(TRUE)) != 0)
CXllApp::XlMessageBox("Failed to set back color", 1);
The color indices above can be numbers between 1 and 56 corresponding to the 56 colors shown in the Cell Formattting dialogs. The function ShowCellColor() in the sample faq0021_colors.zip can be used to find the values of these color indices.
See Also
- CXlMacros::FontProperties() in the reference guide.
- faq0021_colors.zip contains a sample add-in which sets the colors of the current selection.
