罫線の設定方法
セルに枠線(罫線)を付けるには2通りの方法があります。
1つは挿入タブ→テーブル機能を使ったテーブルを作成する方法です。オートフィルターや背景色も付けてくれる便利な機能ですが、VBAで操作する場合はPasteメソッドでリンク貼り付けを行うとエラーになるなど、通常のセル操作とは違う点があります。
もう1つはここで紹介する方法で、セル範囲を選択してそこに枠線を設定する方法です。セル範囲を右クリック→セルの書式設定→罫線 での設定を自動化します。
サンプルコード
以下のコードには関数が2つあります。2つの関数を同じ標準モジュールなどに入れます。
実行するのは1つ目のSetFrameBorders()です。2つ目の関数SetBorderは1つ目の関数から呼び出している関数で上下左右、水平、垂直、それぞれに対して線の種類、太さ、色を指定された罫線を引きます。
SetFrameBorders()を実行すると、選択しているセル範囲の外枠を太線、縦を細線、横を極細線で枠線を引きます。選択するセル範囲はCtrl+ドラッグでの複数セル範囲になっていても問題ありません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
Sub SetFrameBorders() '// 左上から右下への斜線(\) Selection.Borders(xlDiagonalDown).LineStyle = xlNone '// 右上から左下への斜線(/) Selection.Borders(xlDiagonalUp).LineStyle = xlNone '// 左 Call SetBorder(Selection, xlEdgeLeft, xlContinuous, xlMedium) '// 上 Call SetBorder(Selection, xlEdgeTop, xlContinuous, xlMedium) '// 下 Call SetBorder(Selection, xlEdgeBottom, xlContinuous, xlMedium) '// 右 Call SetBorder(Selection, xlEdgeRight, xlContinuous, xlMedium) '// 複数列選択されている場合 If (Selection.Columns.Count > 1) Then '// 垂直線 Call SetBorder(Selection, xlInsideVertical, xlContinuous) End If '// 複数行選択されている場合 If (Selection.Rows.Count > 1) Then '// 水平線 Call SetBorder(Selection, xlInsideHorizontal, xlContinuous, xlHairline) End If End Sub '// 機能:Bordersプロパティを設定する '// 引数1:対象セル範囲のRangeオブジェクト '// 引数2:罫線位置 '// 引数3:LineStyleプロパティ設定値(省略時=xlContinuous) '// 引数4:Weightプロパティ設定値(省略時=xlThin) '// 引数5:ColorIndexプロパティ設定値(省略時=xlAutomatic) Sub SetBorder(r As Range, i, Optional l = xlContinuous, Optional w = xlThin, Optional c = xlAutomatic) Dim b As Border Set b = r.Borders(i) b.LineStyle = l b.Weight = w b.ColorIndex = c End Sub |
使い方
1.枠線を設定したいセル範囲を選択します。ここでは3つのセル範囲を選択しています。
2.上のサンプルコードのSetFrameBorders()を実行します。実行後はセル範囲が選択された状態のままです。
3.別のセルを選択して選択状態をはずした状態が以下になります。