如何改变内部而不是边框​​的颜色

时间:2015-04-05 11:58:58

标签: c# excel

我正在尝试使用一个按钮来创建一个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;
         }
      }
  }

1 个答案:

答案 0 :(得分:0)

边框和阴影是单独的属性。在没有填充颜色(例如白色)的情况下,示出了网格线。您可以通过将边框设置为匹配来模拟网格线,但它并不完美。使用宏录制器获取设置不同边框线条样式,主题颜色,镀层和重量的代码,然后尝试按照您想要的方式设置它们。