Диапазон Excel.BorderAround (), граница всегда черная
Это код, который я использую:
rngData.BorderAround(Excel.XlLineStyle.xlContinuous,
Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin,
Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexNone,
System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(178, 178, 178)));
цвет границы всегда черный независимо от того, какое значение RGB я предоставляю.
6 ответов
у меня была такая же проблема, не удалось найти решение в интернете, документация MS для использования этого метода в VSTO немного плохая.
в любом случае, вероятно, немного поздно для вас, видя, как вы опубликовали несколько месяцев назад, но мой обходной путь был просто не использовать диапазон.Метод BorderAround и написать свой собственный!
private void BorderAround(Excel.Range range, int colour)
{
Excel.Borders borders = range.Borders;
borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle = Excel.XlLineStyle.xlContinuous;
borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle = Excel.XlLineStyle.xlContinuous;
borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Excel.XlLineStyle.xlContinuous;
borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle = Excel.XlLineStyle.xlContinuous;
borders.Color = colour;
borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlLineStyleNone;
borders[Excel.XlBordersIndex.xlInsideHorizontal].LineStyle = Excel.XlLineStyle.xlLineStyleNone;
borders[Excel.XlBordersIndex.xlDiagonalUp].LineStyle = Excel.XlLineStyle.xlLineStyleNone;
borders[Excel.XlBordersIndex.xlDiagonalDown].LineStyle = Excel.XlLineStyle.xlLineStyleNone;
borders = null;
}
может быть вызван в соответствии с приведенным ниже примером (Contents_Table является NamedRange в моем листе):
BorderAround(Contents_Table.Cells, System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(79, 129, 189)));
надеюсь, это поможет кому-то еще там разрывать их волосы.
альтернативно, если вы не беспокоитесь о том, чтобы обеспечить удаление внутренних и диагональных линий, которые я успешно использовал:
range.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;
range.Borders.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(153, 153, 153));
worksheet.Cells[8, i].Borders.Color =
System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
range.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;
range.Borders.Color = System.Drawing.ColorTranslator.ToOle(Color.Red);
изменить цвет границы вы должны использовать либо
Color:=RGB(255, 0, 0)
с RGB-код вы интересны В или
ColorIndex:=3
- чтобы получить красный цвет, например.
если вы используете оба, [ColorIndex:=3]
переопределяет [Color:=RGB(255, 0, 0)]
- действие виден, когда вы пытаетесь установить разные цвета для каждого, или использовать
[colorindex:=xlColorIndeAutomatic]
или [xlColorIndexNone]
.
в отличие от формул Excel, в VBA вы можете и, вероятно, должны пропустить параметры, как они предлагаются VBA технология IntelliSense...