我正在尝试使用一个按钮来创建一个excel加载项,该按钮可以调整除命名范围之外的所有单元格。
我正在使用TintAndShade属性,将其设置为-0.7。我遇到的问题是,当我打开一个新工作表时,单元格内部处于" No fill"模式。因此,TintAndShade属性没有区别。
然后,我尝试检查内部颜色是否默认(ColorIndex = -4142),如果是这种情况,我将颜色设置为白色(ColorIndex = 2)。我遇到的问题是,它会擦除所有边框(我认为边框也在" No Fill"模式)。我无法将它们设置为黑色,因为它不是默认颜色。
有人知道如何在不删除默认边框颜色的情况下更改内部颜色吗?或者是否还有其他更简单的方法来制作这样一个按钮(除了指定的范围外,所有单元格都会着色)?
谢谢!
如果您想检查,请输入以下代码:
int shadeMargin = 0;
Excel.Worksheet excelWorksheet = Globals.ThisAddIn.Application.ActiveSheet;
Excel.Names tags = Globals.ThisAddIn.Application.ActiveWorkbook.Names;
Excel.Range last = excelWorksheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell, Type.Missing);
Excel.Range xlRange = excelWorksheet.get_Range("A1", last);
for (int i = 1; i < xlRange.Rows.Count + 1 + shadeMargin; i++)
{
for (int j = 1; j < xlRange.Columns.Count + 1 + shadeMargin; j++)
{
if (xlRange.Cells[i, j].Interior.ColorIndex == -4142) // Correspond to the "No Fill" color
{
xlRange.Cells[i, j].Interior.ColorIndex = 2; // Replaced by WHITE color
}
xlRange.Cells[i, j].Interior.TintAndShade = -0.7;
}
}
foreach (Excel.Name tag in tags)
{
Excel.Range tagRange = tag.RefersToRange;
for (int i = 1; i < tagRange.Rows.Count + 1; i++)
{
for (int j = 1; j < tagRange.Columns.Count + 1; j++)
{
tagRange.Cells[i, j].Interior.TintAndShade = 0;
}
}
}
答案 0 :(得分:0)
边框和阴影是单独的属性。在没有填充颜色(例如白色)的情况下,示出了网格线。您可以通过将边框设置为匹配来模拟网格线,但它并不完美。使用宏录制器获取设置不同边框线条样式,主题颜色,镀层和重量的代码,然后尝试按照您想要的方式设置它们。