Microsoftのドキュメントを見ると、「xlBordersIndex」プロパティを使用してセルの特定の境界線の端にアクセスでき、たとえば、セルの左端の境界線スタイルを設定できます。
range.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft].LineStyle = Excel.XlLineStyle.xlContinuous;
しかし、すべての境界線を描画したい場合はどうなりますか?私が試してみました
range.BorderAround2();
しかし、それは私が理解している範囲自体の周りにボックスを描くだけです。それで私は試しました
range.Cells.BorderAround2();
範囲内の各セルを通過し、各セルの周囲にすべての境界線を配置すると考えます。これは発生したことではありません。したがって、範囲内のすべてのセルの周りにすべての境界線を取得するには、4つの境界線インデックスのそれぞれに手動でアクセスする必要がありますか?
private void AllBorders(Excel.Borders _borders)
{
_borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle = Excel.XlLineStyle.xlContinuous;
_borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle = Excel.XlLineStyle.xlContinuous;
_borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle = Excel.XlLineStyle.xlContinuous;
_borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Excel.XlLineStyle.xlContinuous;
_borders.Color = Color.Black;
}
oRange = SHEET2.get_Range("a1", "a10");
oRange.Borders.get_Item(Excel.XlBordersIndex.xlEdgeLeft).LineStyle = Excel.XlLineStyle.xlContinuous;
oRange.Borders.get_Item(Excel.XlBordersIndex.xlEdgeRight).LineStyle = Excel.XlLineStyle.xlContinuous;
oRange.Borders.get_Item(Excel.XlBordersIndex.xlInsideHorizontal).LineStyle = Excel.XlLineStyle.xlContinuous;
oRange.Borders.get_Item(Excel.XlBordersIndex.xlInsideVertical).LineStyle = Excel.XlLineStyle.xlContinuous;
C#にはまだ詳しくありませんが、VBAにはRange.Borders(xlInsideVertical)
およびRange.Borders(xlInsideHorizontal)
プロパティがあります。マクロレコーダーを使用し、すべてのブック領域にすべての境界線を適用してみてください。おそらくそれは役立つでしょう。
Microsoft.Office.Interop.Excel.Range tRange = xlWorkSheet.UsedRange;
tRange.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
tRange.Borders.Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin;
For Each range In ranges
For Each row As Range In .Range(range).Rows
row.Cells.BorderAround(XlLineStyle.xlContinuous)
row.Cells.Borders.Item(XlBordersIndex.xlInsideHorizontal).LineStyle = XlLineStyle.xlContinuous
row.Cells.Borders.Item(XlBordersIndex.xlInsideVertical).LineStyle = XlLineStyle.xlContinuous
Next
Next
なぜ単純にしないのですか?
Excel.Range tRange = xlWorkSheet.UsedRange;
tRange.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;
tRange.Borders.Weight = Excel.XlBorderWeight.xlThin;
注:関数。UsedRange()を使用して範囲を取得するには、データで満たされた行とセル(範囲)の後に境界線を適用します