Tôi đã có cùng một vấn đề, không thể tìm thấy bất kỳ giải pháp nào trên web, tài liệu MS để sử dụng phương pháp này trong VSTO hơi kém.
Dù sao, có thể hơi muộn để bạn thấy khi bạn đăng vài tháng trước, nhưng cách giải quyết của tôi đơn giản là không sử dụng phương thức Range.BorderAround và viết của riêng tôi!
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;
}
có thể được gọi theo dưới đây ví dụ (Contents_Table là một NamedRange trong bảng tính của tôi):
BorderAround(Contents_Table.Cells, System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(79, 129, 189)));
Hy vọng điều này sẽ giúp người khác ngoài kia xé tóc của họ ra.
ngắn và tốt cách –