2010-02-15 29 views
20

Đây là mã tôi đang sử dụng:Excel Range.BorderAround(), Bộ đội Biên luôn là màu đen

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))); 

Màu sắc đường viền luôn là màu đen không có vấn đề gì giá trị RGB tôi cung cấp.

Trả lời

51

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.

2
.Range("H1:J1").BorderAround LineStyle:=xlContinuous, Weight:=xlMedium, color:=RGB(130, 130, 130) 
7

Hoặc nếu bạn không phải lo lắng để đảm bảo việc loại bỏ các bên và đường chéo dòng Tôi đã sử dụng thành công:

range.Borders.LineStyle = Excel.XlLineStyle.xlContinuous; 
range.Borders.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(153, 153, 153)); 
5
worksheet.Cells[8, i].Borders.Color = 
    System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red); 
+0

ngắn và tốt cách –

2
range.Borders.LineStyle = Excel.XlLineStyle.xlContinuous; 

range.Borders.Color = System.Drawing.ColorTranslator.ToOle(Color.Red); 
+0

tôi xin lỗi để yêu cầu bạn nhưng làm thế nào tôi có thể nhận được "tầm" vật ? – Divyesh

+0

Tôi muốn vẽ đường viền đơn giản từ phạm vi A1: M30 – Divyesh

0

Để thay đổi màu biên giới bạn phải sử dụng hoặc

Color:=RGB(255, 0, 0)

với mã RGB bạn thích thú, hoặc ColorIndex:=3 - để lấy màu đỏ, chẳng hạn.

Nếu bạn sử dụng cả hai, [ColorIndex:=3] sẽ ghi đè [Color:=RGB(255, 0, 0)] - hành động hiển thị khi bạn cố gắng thiết lập màu sắc khác nhau cho từng, hoặc sử dụng [colorindex:=xlColorIndeAutomatic] hoặc với [xlColorIndexNone].

Không giống như trong công thức Excel, trong VBA bạn có thể và có lẽ nên bỏ qua các thông số như họ đang được đề xuất bởi IntelliSense VBA của ...

Các vấn đề liên quan