Я пытаюсь создать надстройку 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;
}
}
}
Границы и затенение являются отдельными свойствами. При отсутствии цвета заливки (например, белого) показаны линии сетки. Вы можете имитировать линии сетки, установив границы для соответствия, но это будет не идеально. Используйте макрорекордер, чтобы получить коды для настройки различных границ linestyle, themecolor, tintandshade и веса, а затем поэкспериментировать с настройкой их так, как вы хотите.