Excel VBA を使って表の罫線を引く方法
Excelで表を作成するときに罫線を引くことは必須になりますが、実際に手作業で罫線を引く場合、意外と時間がかかり面倒を感じます。あらかじめ決まった表であればVBAを使って自動的に表の罫線を引くことが可能になり業務の効率化が図れます。今回はVBA で Excel の表を自動作成する際にどのように罫線を引いたらよいのかサンプルアプリを使って紹介します。
罫線を描画するサンプルアプリの説明
Excel の各種罫線を描画するサンプルアプリです。
今回のアプリを実行すると下記に示す罫線の各スタイル 1 ~ 14 の線を引くことができます。
「罫線描画」ボタンをクリックすると各スタイル 1 ~ 14 の線を引きます。右隣の 「罫線削除」 ボタンをクリックすると描かれていた罫線が消去されます。
罫線のスタイルと線種の説明
罫線の種類や太さを設定するには「LineStyle」 プロパティと「Weight」プロパティに以下の表にある設定値を指定します。線のスタイルと設定値を番号で紐付けていますので参考にしてください。
Range(線を引く範囲).Borders(線を引く位置).LineStyle = スタイルを指定する設定値
Range(線を引く範囲)).Borders(線を引く位置).Weight = 線種を指定する設定値
No | スタイル名 | 線種 | スタイルを指定する設定値 | 線種を指定する設定値 |
1 | 線なし | - | xlLineStyleNone | - |
2 | 実線 | 細線 | xlContinuous | xlHairline |
3 | 点線 | 極細 | xlDot | xlThin |
4 | 二点鎖線 | 極細 | xlDashDotDot | xlThin |
5 | 一点鎖線 | 極細 | xlDashDot | xlThin |
6 | 破線 | 極細 | xlDash | xlThin |
7 | 実線 | 極細 | xlContinuous | xlThin |
8 | 二点鎖線 | 普通 | xlDashDotDot | xlMedium |
9 | 斜破線 | 普通 | xlSlantDashDot | xlMedium |
10 | 一点鎖線 | 普通 | xlDashDot | xlMedium |
11 | 破線 | 普通 | xlDash | xlMedium |
12 | 実線 | 普通 | xlContinuous | xlMedium |
13 | 実線 | 太線 | xlContinuous | xlThick |
14 | 2本線 | 太線 | xlDouble | xlThick |
スタイルや線種と同様に線を引く箇所を指定する時にも「Borders」プロパティに以下の値を設定します。
Range(線を引く範囲).Borders(線を引く位置).LineStyle = スタイルを指定する設定値
線を引く箇所 | 設定値 |
垂直線 | xlInsideVertical |
水平線 | xlInsideHorizontal |
上線 | xlEdgeTop |
左側 | xlEdgeLeft |
下線 | xlEdgeBottom |
右側 | xlEdgeRight |
サンプルアプリのソースコード コードの作成手順はこちら
'「罫線描画」ボタン
Sub ボタン1_Click()
'1の罫線を引く
Range("B4:D4").Borders(xlEdgeBottom).LineStyle = xlLineStyleNone
'2の罫線を引く
Range("B5:D5").Borders(xlEdgeBottom).LineStyle = xlContinuous
Range("B5:D5").Borders(xlEdgeBottom).Weight = xlHairline
'3の罫線を引く
Range("B6:D6").Borders(xlEdgeBottom).LineStyle = xlDot
Range("B6:D6").Borders(xlEdgeBottom).Weight = xlThin
'4の罫線を引く
Range("B7:D7").Borders(xlEdgeBottom).LineStyle = xlDashDotDot
Range("B7:D7").Borders(xlEdgeBottom).Weight = xlThin
'5の罫線を引く
Range("B8:D8").Borders(xlEdgeBottom).LineStyle = xlDashDot
Range("B8:D8").Borders(xlEdgeBottom).Weight = xlThin
'6の罫線を引く
Range("B9:D9").Borders(xlEdgeBottom).LineStyle = xlDash
Range("B9:D9").Borders(xlEdgeBottom).Weight = xlThin
'7の罫線を引く
Range("B10:D10").Borders(xlEdgeBottom).LineStyle = xlContinuous
Range("B10:D10").Borders(xlEdgeBottom).Weight = xlThin
'8の罫線を引く
Range("B11:D11").Borders(xlEdgeBottom).LineStyle = xlDashDotDot
Range("B11:D11").Borders(xlEdgeBottom).Weight = xlMedium
'9の罫線を引く
Range("B12:D12").Borders(xlEdgeBottom).LineStyle = xlSlantDashDot
Range("B12:D12").Borders(xlEdgeBottom).Weight = xlMedium
'10の罫線を引く
Range("B13:D13").Borders(xlEdgeBottom).LineStyle = xlDashDot
Range("B13:D13").Borders(xlEdgeBottom).Weight = xlMedium
'11の罫線を引く
Range("B14:D14").Borders(xlEdgeBottom).LineStyle = xlDash
Range("B14:D14").Borders(xlEdgeBottom).Weight = xlMedium
'12の罫線を引く
Range("B15:D15").Borders(xlEdgeBottom).LineStyle = xlContinuous
Range("B15:D15").Borders(xlEdgeBottom).Weight = xlMedium
'13の罫線を引く
Range("B16:D16").Borders(xlEdgeBottom).LineStyle = xlContinuous
Range("B16:D16").Borders(xlEdgeBottom).Weight = xlThick
'14の罫線を引く
Range("B17:D17").Borders(xlEdgeBottom).LineStyle = xlDouble
Range("B17:D17").Borders(xlEdgeBottom).Weight = xlThick
End Sub
------------------------------------------------------------------------------
'「罫線削除」ボタン
Sub ボタン2_Click()
Dim i As Integer
'4行目から17行目までをループ
For i = 4 To 18
'1~14の罫線を消去
Range("B" & i & ":D" & i & "").Borders(xlEdgeBottom).LineStyle = xlLineStyleNone
Next
End Sub
ディスカッション
コメント一覧
Excellent post, you have pointed out some excellent details, I believe this is a good website. Filide Malachi Anny