it-swarm.com.de

Excel Range.BorderAround (), Border ist immer schwarz

Dies ist der Code, den ich verwende:

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

Die Randfarbe ist immer schwarz, egal welchen RGB-Wert ich zur Verfügung stelle.

21
Aseem Gautam

Ich hatte das gleiche Problem, konnte im Web keine Lösung finden, die MS-Dokumentation für die Verwendung dieser Methode in VSTO ist etwas schlecht.

Wie auch immer, wahrscheinlich ein bisschen spät für Sie, als Sie vor Monaten gepostet haben, aber mein Workaround war einfach, die Range.BorderAround-Methode nicht zu verwenden und meine eigene zu schreiben!

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

Kann wie im folgenden Beispiel aufgerufen werden (Contents_Table ist ein NamedRange in meinem Arbeitsblatt):

BorderAround(Contents_Table.Cells, System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(79, 129, 189)));

Ich hoffe, das hilft jemandem da draußen, der sich die Haare ausreißt.

55
Wad

Wenn Sie sich nicht sorgen, ob Sie die inneren und diagonalen Linien entfernen, habe ich erfolgreich verwendet:

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

Um die Rahmenfarbe zu ändern, müssen Sie entweder verwenden

Color:=RGB(255, 0, 0)

mit dem RGB-Code, für den Sie sich interessieren, oder ColorIndex:=3, um beispielsweise die rote Farbe zu erhalten.

Wenn Sie beide verwenden, überschreibt [ColorIndex:=3][Color:=RGB(255, 0, 0)] - Aktion, die angezeigt wird, wenn Sie versuchen, für jede Farbe eine andere Farbe festzulegen, oder verwenden Sie [colorindex:=xlColorIndeAutomatic] Oder mit [xlColorIndexNone].

Anders als in Excel-Formeln können und sollten Sie in VBA Parameter überspringen, wie sie von VBAs Intellisense vorgeschlagen werden ...

0
Licu