OfficeType

VBA~セルの罫線の種類、太さ、色を取得しよう~Excel

VBAでセルの罫線の種類、太さ、色を取得したい時はRange.Bordersプロパティで取得できます。

罫線の種類の取得

罫線の種類を取得したい時はBorder.LineStyleプロパティで取得できます。下のコードを実行すると変数aにセルB2の罫線の種類の番号が取得され、その変数aをセルB4の罫線に設定しています。

Sub test1()

Dim a As Variant

a = Range("B2").Borders.LineStyle

Range("B4").Borders.LineStyle = a

End Sub

image-01

image-02

線の種類は以下の通りになります。

名前説明
xlContinuous1実線
xlDash4115破線
xlDashDot4一点鎖線
xlDashDotDot5ニ点鎖線
xlDot-4118点線
xlDouble-4119本線
xlLineStyleNone-4142線なし
xlSlantDashDot13斜破線

罫線の太さを取得

罫線の太さを取得したい時はBorders.Weightプロパティで取得できます。下のコードを実行すると変数aにセルB2の罫線の太さの番号が取得され、その変数aをセルB4の罫線の太さに設定しています。

Sub test2()

Dim a As Variant

a = Range("B2").Borders.Weight

Range("B4").Borders.Weight = a

End Sub

image-03

image-04

線の太さの種類は以下の通りになります。

名前説明
xlHairline1細線
xlMedium-4138普通
xlThick4太線
xlThin2極細

罫線の色を取得する

罫線の色を取得したい時はBorder.Colorプロパティで取得できます。下のコードを実行すると変数aにセルB2の罫線の色番号が取得され、その変数aをセルB4の罫線の色に設定しています。

Sub test3()

Dim a As Variant

a = Range("B2").Borders.Color

Range("B4").Borders.Color = a

End Sub

image-05

image-06

範囲の罫線の種類を取得する

範囲を指定したい時はRange("範囲の左上のセル:範囲の右下のセル")で指定できます。下のコードを実行すると変数aにセルB2からセルD4に設定された罫線の種類が取得され、その変数aをセルB6からセルD8の罫線の種類に設定しています。罫線の種類が上下左右、範囲内の水平、垂直でどれかが異なる種類の場合はNullが取得されるのでLineStyleに変数aを設定しても罫線は引かれません。

Sub test4()

Dim a As Variant

a = Range("B2:D4").Borders.LineStyle

Range("B6:D8").Borders.LineStyle = a

End Sub

image-07

image-08

指定したシートに罫線の種類を取得

シートを指定するときはWorksheets("シート名")で指定できます。下のコードを実行するとSheet2のセルB2に罫線が設定されます。下のコードを実行すると変数aにSheet2のセルB2の罫線の種類が取得され、その変数aをSheet2のセルB4の罫線の種類に設定しています。

Sub test5()

Dim a As Variant

a = Worksheets("Sheet2").Range("B2").Borders.LineStyle

Worksheets("Sheet2").Range("B4").Borders.LineStyle = a

End Sub

image-09

image-10

ブックを指定して罫線の種類を取得

ブックを指定するときはWorkbooks("ブック名")で指定できます。Book1.xlsxとBook2.xlsxというブックが開いた状態で下のコードを実行すると変数aにBook1.xlsxのSheet1のセルB2の罫線が取得され、その変数aをBook2.xlsxのSheet1のセルB2の罫線の種類に設定しています。

Sub test6()

Dim a As Variant

a = Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("B2").Borders.LineStyle

Workbooks("Book2.xlsx").Worksheets("Sheet1").Range("B2").Borders.LineStyle = a

End Sub