データがある部分の判定
入力されているセル全体に対して罫線を設定したいことがあります。
その際に問題になるのが、「入力されているセルの範囲」をどうやって判定するか、ということです。
詳しくは「VBAで編集セル範囲の選択と最終行と最終列の取得」に書いていますが、判定は以下のように1行で可能です。
1 2 |
'// シートの入力個所を選択 ActiveSheet.UsedRange.Select |
設定する罫線の内容
上のように罫線を設定する範囲が分かればあとは罫線を設定するだけです。
ただし、どのような罫線を引くのかは好みなどがあると思いますので、ここではサンプルとして外枠を二重線、縦線(垂直線)を細線、横線(水平線)を点線で設定します。
なお、罫線には線のスタイルと太さの組み合わせには制限があります。例えば太い点線(Weight = xlThick、LineStyle = xlDot)は設定できません。「LineStyleとWeightの組み合わせ可能パターン」に詳細を書いています。
データがあるセルに罫線を設定するサンプルコード
コメントに書いていますが、外枠、垂直線、水平線のそれぞれの線のスタイル、太さ、色を変えて設定するサンプルです。
入力されているセル範囲に対して全体を外枠を囲って罫線を設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Sub SetBorderUsedRange() Dim r As Range Set r = ActiveSheet.UsedRange '// 外枠:二重線+太+薄い青 r.Borders.LineStyle = xlDouble r.Borders.Weight = xlThick r.Borders.Color = RGB(30, 144, 255) '// 垂直線:実線+細+紫色 r.Borders(xlInsideVertical).LineStyle = xlContinuous r.Borders(xlInsideVertical).Weight = xlThin r.Borders(xlInsideVertical).Color = RGB(138, 43, 226) '// 水平線:点線+細+赤 r.Borders(xlInsideHorizontal).LineStyle = xlDot r.Borders(xlInsideHorizontal).Weight = xlThin r.Borders(xlInsideHorizontal).Color = RGB(255, 0, 0) End Sub |
実行前
実行後(分かりやすいようにグリッド線は消しています)
線の位置とスタイルと太さ
罫線の位置と線のスタイルと太さを変更したい場合は以下の定数値で変更してください。
線の位置:XlLineStyle列挙型
定数 | 値 | 説明 |
---|---|---|
指定なし(引数省略時) | なし | 上下左右、水平、垂直の6つの線 |
xlDiagonalDown | 5 | 右下がり斜線 |
xlDiagonalUp | 6 | 右上がり斜線 |
xlEdgeBottom | 9 | 下線 |
xlEdgeLeft | 7 | 左線 |
xlEdgeRight | 10 | 右線 |
xlEdgeTop | 8 | 上線 |
xlInsideHorizontal | 12 | 垂直線 |
xlInsideVertical | 11 | 水平線 |
線のスタイル:XlLineStyle列挙型
定数 | 値 | 説明 |
---|---|---|
xlContinuous | 1 | 細い実線 |
xlDash | -4115 | 破線 |
xlDashDot | 4 | 一点鎖線 |
xlDashDotDot | 5 | 二点鎖線 |
xlDot | -4118 | 点線 |
xlDouble | -4119 | 二重線 |
xlLineStyleNone | -4142 | なし |
xlSlantDashDot | -13 | 斜め斜線 |
線の太さ:XlBorderWeight列挙型
定数 | 値 | 内容 |
---|---|---|
xlHairline | 1 | 極細 |
xlThin | 2 | 細 |
xlMedium | -4138 | 中 |
xlThick | 4 | 太 |