Как изменить цвет интерьера, а не границы

1

Я пытаюсь создать надстройку 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;
         }
      }
  }
  • 0
    У клеток на самом деле есть граница, или вы видите линии сетки? Вы можете перейти к просмотру на ленте и снять флажок рядом с Gridlines в группе «Показать», чтобы проверить.
  • 0
    Нет, вы правы, у них нет границы, когда я снимаю флажок «Показать».
Теги:
excel

1 ответ

0

Границы и затенение являются отдельными свойствами. При отсутствии цвета заливки (например, белого) показаны линии сетки. Вы можете имитировать линии сетки, установив границы для соответствия, но это будет не идеально. Используйте макрорекордер, чтобы получить коды для настройки различных границ linestyle, themecolor, tintandshade и веса, а затем поэкспериментировать с настройкой их так, как вы хотите.

  • 0
    Хорошо, спасибо, я использовал макро рекордер. Я думаю, что теперь у меня есть кое-что, что делает в значительной степени то, что я хотел, но все еще не идеально: я ищу цвет, похожий на тот, который появляется в ячейке, когда вы выбираете его, но без выбора. Но я начинаю думать, что это невозможно ...
  • 1
    Используя палитру цветов, эти границы равны # D4D4D4, что соответствует RGB (212,212,212). Когда я рисую границу с этим цветом, он выглядит точно так же, как другие.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню