如何改变内部的颜色,而不是边界

我试图做一个excel加载项的button,除了命名范围以外的所有单元格。

我正在使用TintAndShade属性,将其设置为-0.7。 我遇到的问题是,当我打开一个新的工作表时,单元格内部处于“无填充”模式。 因此TintAndShade属性没有区别。

然后,我试图检查内部颜色是否默认(ColorIndex = -4142),如果是这种情况,我将颜色设置为白色(ColorIndex = 2)。 我遇到的问题是,它消除了所有的边界(我认为边界也处于“无填充”模式)。 我不能将它们设置为黑色,因为它不是默认的颜色。

是否有人知道如何更改内部颜色而不删除默认的边框颜色? 或者有没有其他更简单的方法来制作这样一个button(除了命名范围之外的所有单元格)?

谢谢 !

这是我的代码,如果你想检查:

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; } } } 

边框和底纹是不同的属性。 在没有填充颜色(例如白色)的情况下显示网格线。 你可以通过设置边框来匹配网格线,但是它不会是完美的。 使用macroslogging器获取设置不同的边框linestyle,themecolor,tintandshade和重量的代码,然后尝试以您想要的方式设置它们。