VBAで罫線を引く処理を完全自動化【 コピペ用サンプルVBA掲載 】

Left Caption

疑問がある人

VBAを使って一覧表の罫線を自動で引きたい。どうやって設定すればいいの?

 

こんな要望にお応えします。

 

この記事では、罫線を引くための基本的なVBAから一覧表の行や列が増減しても自動的に罫線の表示位置を調整することができるVBAを詳しくご紹介。

しかもコピペしてる使えるサンプルVBAを掲載しているので、罫線を引く範囲の指定方法さえ理解すれば深く意味を理解しなくてもVBAを使って罫線を自動的に引くことができるようになります。

 

 

  • 罫線を引く処理を完全自動化できる
  • 一度設定してしまえばずっと使える
  • 記事内のサンプルVBAを使えば、深い理解は必要なし

 

一覧表を編集する際、下記のような経験をしたことがある方が多いのではないでしょうか。

罫線を整えて一覧表を完成させたあとに上司から修正依頼が。。依頼された内容の修正はしたけど修正後罫線を整えるのを忘れてしまった。

罫線の修正忘れはよくあることですが、しょうがないで済むことではありません。

 

私は、「資料をプリントアウトしたあとに罫線の修正忘れに気づく」という失敗を何度もしてきたので、罫線を引く処理は完全自動化してしまうことを強くおすすめしています。

VBAを使えば、ぐちゃぐちゃになった罫線を一瞬で見た目のキレイな一覧表に修正することが可能なので是非使い方をマスターしましょう。

 

 

「VBAで罫線を引く」とは?

Left Caption

疑問がある人

そもそも「VBAで罫線を引く処理」と「手動で罫線を引く処理」にどんな違いがあるの?

 

「VBAで罫線を引く」とは、罫線を引くVBA設定したマクロを実行するだけでどれだけ複雑な罫線でも一瞬で引くことができるということです。

 

下記の動画では、VBAで罫線を引く動作を紹介しています。

 

Left Caption

ひらめく人

複雑な処理が必要な場合でも一瞬で罫線を引くことが可能

 

VBAを自由自在に扱えるようになれば、以下のような作業まで自動化することができます。

 

  • 外枠は太い線で引く
  • 項目ごとに点線を引く
  • タイトルは二重線で引く
  • 罫線の色を選択する

 

罫線の種類や太さを操作するのは意外と手間と時間がかかる作業ですが、VBAを使えば一瞬で作業終了です。

 

 

動画で紹介している「罫線を引くVBA」が設定されたエクセルファイルを下記のサイトでダウンロードすることが可能です。

 

 

  • 罫線を引くマクロをすぐに利用できる
  • VBAを設定する時間の短縮ができる
  • 設定されているVBAを改修して、業務内容にアレンジできる

 

上記のようなメリットがあるので、罫線を引く作業を自動化したい!と考えている方におすすめです。

 

 

Left Caption

ガッツポーズの人

かなり便利なVBAだと感じてくれたでしょうか。

 

さっそく罫線を引くVBAの内容をご紹介していきます。

 

罫線を引くVBA【.Bodersプロパティ】

VBAを使って罫線を引くには、「.Bodersプロパティ」を使用します。

罫線を引く範囲を指定する方法としては、Range.Borders または Cells.Bordersどちらでも作成可能です。

「.Bodersプロパティ」の後に「罫線の種類」や「罫線の太さ」を指定することで複数種類の罫線を組み合わせることができます。一つ一つの要素を詳しくご説明していきます。

 

罫線を引く位置の指定

罫線を引く範囲を指定したあと、範囲の左辺の罫線を引くのか、右辺の罫線を引くのか、を細かく指定しなければなりません。

罫線を引く位置を指定するVBAついては下記の基本構造を参考にしてください。

基本構造

Range.Borders( 罫線の位置 ) .LineStyle = 罫線の種類

 

罫線の位置 罫線の位置
xlEdgeTop 上辺
xlEdgeBottom 下辺
xlEdgeRight 右辺
xlEdgeLeft 左辺
xlInsideVertical 内側の垂直線
xlInsideHorizontal 内側の水平線
xlDiagonalUp 右上がり線
xlDiagonalDown 右下がり線

基本構造の「罫線の位置」の部分に上記一覧表の値をいれることで、罫線を引く位置を指定することができます。

なお、「Range.Borders .LineStyle = 罫線の種類」のように罫線の位置を指定しない場合は上下左右に罫線が引かれます

 

罫線の種類を指定する

罫線には実線や点線などの種類が豊富にあります。VBAを使って罫線を引く場合、この線種を指定しなければなりません。

線種を指定するVBAついては下記の基本構造を参考にしてください。

基本構造

Range.Borders( 罫線の位置 ) .LineStyle = 罫線の種類

 

罫線の種類 罫線の種類
xlContinuous 実線
xlDash 破線
xlDashDot 一点鎖線
xlDashDotDot 二点鎖線
xlDot 点線
xlDouble 二重線
xlSlantDashDot 斜め斜線
xlLineStyleNone なし

基本構造の「罫線の種類」の部分に上記一覧表の値をいれることで、線種を指定することができます。

 

罫線の太さを指定する

罫線には「極細」や「太い」といった線の太さを指定することができます。線の太さをしっかり区別することで見やすい表を作成することが可能になります。

線の太さを指定するVBAついては下記の基本構造を参考にしてください。

基本構造

Range.Borders( 罫線の位置 ) .Weight = 罫線の太さ

 

xlHairline 極細
xlThin 細い
xlMedium
xlThick 太い

「LineStyle」ではなく「Weight」になるので注意が必要です。

 

罫線の色を変える

罫線は「黒」以外にも「赤」や「青」といった色を指定することができます。色を指定しなかった場合、「黒」に統一されます。

罫線の色を指定するVBAついては下記の基本構造を参考にしてください。

基本構造

Range.Border( 罫線の位置 ).color = RGB( 0 , 0 , 0 )

もしくは

Range.Border( 罫線の位置 ).color = 色の定数

 

vbBlack
vbWhite
vbRed
vbBlue
vbGreen
vbTellow
Left Caption

ひらめく人

色の指定には2通りの方法がありますが、使いやすい方を覚えればOKです。

 

罫線を引くVBAの導入方法

画像を使って、「VBA記入の方法」「コピペして使えるサンプルVBA」「設定したVBAの実行方法」を解説しているので、VBA初心者の方でも簡単に導入できるかと思います。

 

以下3つのサンプル事例を使って罫線を引くVBAの導入方法を解説していきます。

 

    • 列や行が増減しても罫線を引く範囲を自動的に調整するVBA
    • 表の始まりをセルで指定して罫線を引くVBA
    • 表の始まりをテキストで検索して罫線を引くVBA

 

Left Caption

ひらめく人

どのVBAも仕事で使えるものばかりなので是非チェックしてみてください。

 

表の列や行が増減しても罫線を引く範囲を自動的に調整するVBA

一覧表の編集作業では、行や列を挿入または削除を行うと罫線の表示が一覧表からズレてしまうことがありますよね。

そんなとき、表の列や行が増減しても罫線を引く範囲を自動的に調整するVBAを利用すれば、罫線の調整を自動で処理することができます。

表の列や行が増減しても罫線を引く範囲を自動的に調整するVBAの設定方法を詳しく解説していきます。

 

1.VBAを起動

 

2.標準モジュールを作成

 

3.ModuleにサンプルVBAを記載

 

4.サンプルVBA

1 Sub テスト()
2 g = Cells(Rows.Count, 1).End(xlUp).Row
3 r = Cells(1, Columns.Count).End(xlToLeft).Column
4 Range(Cells(1, 1), Cells(g, r)).Borders.LineStyle = xlContinuous
5 Range(Cells(1, 1), Cells(g, r)).Borders.Weight = xlThick
6 Range(Cells(1, 1), Cells(g, r)).Borders(xlInsideVertical).LineStyle = xlContinuous
7 Range(Cells(1, 1), Cells(g, r)).Borders(xlInsideVertical).Weight = xlThin
8 Range(Cells(1, 1), Cells(g, r)).Borders(xlInsideHorizontal).LineStyle = xlContinuous
9 Range(Cells(1, 1), Cells(g, r)).Borders(xlInsideHorizontal).Weight = xlThin
10 End Sub

 

5.ボタンを作成

 

6.作成したボタンにマクロを登録

マクロ名のリストにはModuleに作成したサンプルVBAが自動的に表示されます。「テスト」を選択して「OK」を押すと作成したボタンにサンプルVBAが登録されます。

 

7.サンプルVBAの実行

 

A1セルから始める一覧表の罫線を自動的に引くことができました。

 

 表の始まりをセルで指定して罫線を引くVBA

仕事では、A1セルから一覧表を作り始めることはほとんどありませんよね。

一覧表の上に、「補足説明」や「表の題目」が記載されていることがほとんどではないでしょうか。

 

上図サンプル事例のようにシートの途中から始まる一覧表の罫線を引くときは「表の始まりをセルで指定して罫線を引くVBA」の利用がおすすめです。

サンプル事例の内容として、「一覧表の始まりをB4セルと指定し、終わりは自動的に調整する」というVBAの設定方法を解説していきます。

 

1.VBAを起動

 

2.標準モジュールを作成

 

3.ModuleにサンプルVBAを記載

 

 

4.サンプルVBA

1 Sub サンプル2()
2 retu = Cells(4, Columns.Count).End(xlToLeft).Column
3 gyo = Cells(Rows.Count, 2).End(xlUp).Row
4 "罫線をリセット"
5 Range(Cells(4, 2), Cells(gyo, retu)).Borders(xlDiagonalDown).LineStyle = xlNone
6 Range(Cells(4, 2), Cells(gyo, retu)).Borders(xlDiagonalUp).LineStyle = xlNone
7 Range(Cells(4, 2), Cells(gyo, retu)).Borders(xlEdgeLeft).LineStyle = xlNone
8 Range(Cells(4, 2), Cells(gyo, retu)).Borders(xlEdgeTop).LineStyle = xlNone
9 Range(Cells(4, 2), Cells(gyo, retu)).Borders(xlEdgeBottom).LineStyle = xlNone
10 Range(Cells(4, 2), Cells(gyo, retu)).Borders(xlEdgeRight).LineStyle = xlNone
11 Range(Cells(4, 2), Cells(gyo, retu)).Borders(xlInsideVertical).LineStyle = xlNone
12 Range(Cells(4, 2), Cells(gyo, retu)).Borders(xlInsideHorizontal).LineStyle = xlNone
13 "表の罫線を引く"
14 Range(Cells(4, 2), Cells(gyo, retu)).Borders(xlEdgeTop).LineStyle = xlContinuous
15 Range(Cells(4, 2), Cells(gyo, retu)).Borders(xlEdgeTop).Weight = xlMedium
16 Range(Cells(4, 2), Cells(gyo, retu)).Borders(xlEdgeLeft).LineStyle = xlContinuous
17 Range(Cells(4, 2), Cells(gyo, retu)).Borders(xlEdgeLeft).Weight = xlMedium
18 Range(Cells(4, 2), Cells(gyo, retu)).Borders(xlEdgeRight).LineStyle = xlContinuous
19 Range(Cells(4, 2), Cells(gyo, retu)).Borders(xlEdgeRight).Weight = xlMedium
20 Range(Cells(4, 2), Cells(gyo, retu)).Borders(xlEdgeBottom).LineStyle = xlContinuous
21 Range(Cells(4, 2), Cells(gyo, retu)).Borders(xlEdgeBottom).Weight = xlMedium
22 Range(Cells(4, 2), Cells(gyo, retu)).Borders(xlInsideVertical).LineStyle = xlContinuous
23 Range(Cells(4, 2), Cells(gyo, retu)).Borders(xlInsideVertical).Weight = xlThin
24 Range(Cells(4, 2), Cells(gyo, retu)).Borders(xlInsideHorizontal).LineStyle = xlContinuous
25 Range(Cells(4, 2), Cells(gyo, retu)).Borders(xlInsideHorizontal).Weight = xlThin
26 End Sub

 

5.ボタンを作成

 

6.作成したボタンにマクロを登録

マクロ名のリストにはModuleに作成したサンプルVBAが自動的に表示されます。「サンプル2」を選択して「OK」を押すと作成したボタンにサンプルVBAが登録されます。

 

7.サンプルVBAの実行

B4セルから始まる一覧表に罫線を自動的に引くことができました。

 

 

表の始まりをテキストで検索して罫線を引くVBA

 

一覧表の上の行を挿入または削除した場合、始まりの場所が変わってしまい罫線がズレてしまうという問題が発生してしまいます。

一覧表の上に補足説明が追加されたり、作成日を追加記入することになる、など追加業務に対応しなければなりません。

そんな、一覧表の始まりがどこから始まるかわからない!というときに便利なのが、「表の始まりをテキストで検索して罫線を引くVBA」です。

 

 

サンプル事例として上図のような一覧に罫線を引いていきます。「日付」というテキストが一覧表の始まりで、終わりは自動的に調整する!という内容のVBAを作成してみます。

 

1.VBAを起動

 

2.標準モジュールを作成

 

3.ModuleにサンプルVBAを記載

 

 

4.サンプルVBA

1 Sub サンプル3()
2 Dim dater, dateg As Long
3 Dim txt1 As String
4 """表のはじまりのテキストを入力"""
5 txt1 = “日付"
6 """検索したテキストが見つからない場合VBAを終了"""
7 Dim Rng11 As String
8 Rng11 = txt1 & “見当たりません。"
9 Set Rng1 = Cells.Find(What:=txt1)
10 If Rng1 Is Nothing Then
11 MsgBox Rng11
12 Exit Sub
13 Else
14 End If
15 dater = Cells.Find(What:=txt1).Column
16 dateg = Cells.Find(What:=txt1).Row
17 retu = Cells(dateg, Columns.Count).End(xlToLeft).Column
18 gyo = Cells(Rows.Count, dater).End(xlUp).Row
19
20 "罫線をリセット"
21 Range(Cells(dateg, dater), Cells(gyo, retu)).Borders(xlDiagonalDown).LineStyle = xlNone
22 Range(Cells(dateg, dater), Cells(gyo, retu)).Borders(xlDiagonalUp).LineStyle = xlNone
23 Range(Cells(dateg, dater), Cells(gyo, retu)).Borders(xlEdgeLeft).LineStyle = xlNone
24 Range(Cells(dateg, dater), Cells(gyo, retu)).Borders(xlEdgeTop).LineStyle = xlNone
25 Range(Cells(dateg, dater), Cells(gyo, retu)).Borders(xlEdgeBottom).LineStyle = xlNone
26 Range(Cells(dateg, dater), Cells(gyo, retu)).Borders(xlEdgeRight).LineStyle = xlNone
27 Range(Cells(dateg, dater), Cells(gyo, retu)).Borders(xlInsideVertical).LineStyle = xlNone
28 Range(Cells(dateg, dater), Cells(gyo, retu)).Borders(xlInsideHorizontal).LineStyle = xlNone
29 "表の罫線を引く"
30 Range(Cells(dateg, dater), Cells(gyo, retu)).Borders(xlEdgeTop).LineStyle = xlContinuous
31 Range(Cells(dateg, dater), Cells(gyo, retu)).Borders(xlEdgeTop).Weight = xlMedium
32 Range(Cells(dateg, dater), Cells(gyo, retu)).Borders(xlEdgeLeft).LineStyle = xlContinuous
33 Range(Cells(dateg, dater), Cells(gyo, retu)).Borders(xlEdgeLeft).Weight = xlMedium
34 Range(Cells(dateg, dater), Cells(gyo, retu)).Borders(xlEdgeRight).LineStyle = xlContinuous
35 Range(Cells(dateg, dater), Cells(gyo, retu)).Borders(xlEdgeRight).Weight = xlMedium
36 Range(Cells(dateg, dater), Cells(gyo, retu)).Borders(xlEdgeBottom).LineStyle = xlContinuous
37 Range(Cells(dateg, dater), Cells(gyo, retu)).Borders(xlEdgeBottom).Weight = xlMedium
38 Range(Cells(dateg, dater), Cells(gyo, retu)).Borders(xlInsideVertical).LineStyle = xlContinuous
39 Range(Cells(dateg, dater), Cells(gyo, retu)).Borders(xlInsideVertical).Weight = xlThin
40 Range(Cells(dateg, dater), Cells(gyo, retu)).Borders(xlInsideHorizontal).LineStyle = xlContinuous
41 Range(Cells(dateg, dater), Cells(gyo, retu)).Borders(xlInsideHorizontal).Weight = xlThin
42 End Sub

 

5.ボタンを作成

 

6.作成したボタンにマクロを登録

マクロ名のリストにはModuleに作成したサンプルVBAが自動的に表示されます。「サンプル3」を選択して「OK」を押すと作成したボタンにサンプルVBAが登録されます。

 

7.サンプルVBAの実行

「日付」というテキストからはじまる一覧表に罫線を引くことができました。

 

罫線を引く処理を自動化することで作業効率アップ

VBAを使って罫線を引く処理を自動化ことで以下のようなメリットを得ることができます。

 

メリット

  • 作業時間の短縮
  • 罫線を引く作業の忘れ防止
  • 罫線の線種・太さがバラバラになるのを防止

罫線がぐちゃぐちゃになっていないか確認することなく、常に正常な状態に保つことができるのでかなり重宝されています。

 

仕事では、「罫線を使った予定表の管理」という業務があり、罫線を引くVBAが導入されています。

業務内容は下記の動画で詳しくご紹介しています。

VBAの処理としては、「設定シート」に記載された「日付」「時刻」「作業内容」の情報から、罫線を引く「位置」「線種」「色」を判別して予定表に記入する!という内容です。

編集内容が複雑なので手作業でやろうとすると必ずといっていいほど入力ミスが発生していましたが、VBAを導入してから作業時間の大幅な短縮と罫線の編集ミスの激減という効果を得ることができました。

複雑な条件下で罫線を引かなければならないときはVBAで自動化することがおすすめです。

 

VBA初心者の方向けのおすすめ勉強法

罫線を引くVBAのように、VBAには仕事の効率をアップさせることができる機能がいろいろあります。VBAのプログラミングスキルを身に着けることで、今まで何時間もかかかっていた作業をほんの数分で処理することができるようになります。

VBAを基本から学びたい!という方におすすめなのが、オンラインプログラミング学習サービス【1st Step】です。

【1st Step】は初心者のためのプログラミング学習サービスで、C言語・java・VBAの3つのプログラミングの基礎をオンラインで勉強することができます。

 

  • 基礎からプログラミングを勉強したい
  • まとまった勉強時間の確保が難しい
  • 途中で挫折したくない

上記のように考えている方に【1st Step】はおすすめです。

下記の記事では、オンラインプログラミング学習サービス【1st Step】の特徴や私の体験など詳しく紹介しています。

 

 

これからVBAの勉強を始めようと考えている方は是非参考にしてみてください。