我想用一个按钮来使所有的单元格除了命名范围以外的所有单元格的Excel加载项。如何更改内部的颜色和不是边框
我正在使用TintAndShade属性,将其设置为-0.7。我遇到的问题是,当我打开新的工作表时,单元格内部处于“无填充”模式。因此TintAndShade属性没有区别。然后,我试着检查内部颜色是否默认(ColorIndex = -4142),如果是这种情况,我将颜色设置为白色(ColorIndex = 2)。我遇到的问题是,它会擦除所有边界(我认为边界也处于“无填充”模式)。我不能将它们设置为黑色,因为它不是默认颜色。
是否有人知道如何更改内部颜色而不删除默认边框颜色?或者还有没有其他更简单的方法来制作这样的按钮(除了命名范围之外的所有单元格)?
谢谢!
这里是我的代码,如果你想查询:
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;
}
}
}
单元格实际上是否有边框,或者您是否看到网格线?您可以转到功能区上的查看并取消选中“显示”组中的网格线旁边的以进行验证。 – 2015-04-07 15:10:15
不,你是对的,他们没有边框,当我取消选中“显示”按钮。 – Vilsisse 2015-04-16 10:55:52