web-dev-qa-db-ja.com

Excel Range.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値を指定しても常に黒です。

21
Aseem Gautam

私は同じ問題を抱えていて、ウェブ上で解決策を見つけることができませんでした。VSTOでこのメソッドを使用するためのMSドキュメントは少し貧弱です。

とにかく、あなたが数ヶ月前に投稿したのを見るとおそらく少し遅れましたが、私の回避策は、Range.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)));

これが他の誰かが髪を引き裂くのに役立つことを願っています。

56
Wad

あるいは、私が正常に使用した内側と斜めの線を確実に削除することを心配していない場合:

range.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;
range.Borders.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(153, 153, 153));
8
Barry Kaye
worksheet.Cells[8, i].Borders.Color = 
    System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red); 
5
Neptunus
.Range("H1:J1").BorderAround LineStyle:=xlContinuous, Weight:=xlMedium, color:=RGB(130, 130, 130)
2
JAIRO
range.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;

range.Borders.Color = System.Drawing.ColorTranslator.ToOle(Color.Red);
2
Sharique Ansari

境界線の色を変更するには、次のいずれかを使用する必要があります

Color:=RGB(255, 0, 0)

興味のあるRGBコードを使用するか、_ColorIndex:=3_-たとえば、赤色を取得します。

両方を使用する場合、_[ColorIndex:=3]_は[Color:=RGB(255, 0, 0)]-それぞれに異なる色を設定するか、_[colorindex:=xlColorIndeAutomatic]_または_[xlColorIndexNone]_を使用するときに表示されるアクションをオーバーライドします。

Excelの数式とは異なり、VBAでは、VBAのインテリセンスで提案されているとおり、パラメーターをスキップできます。

0
Licu