
お知らせこの記事は初心者用マクロ学習講座|勉強範囲を限定&12本の動画で早く効果を実感の関連記事です
VBAは書式設定を変える事も可能
「VBAは罫線も引けるのでしょうか?」という質問をいただく事があります。比較的質問の中では多い部類に入ります。という事は皆さん気になっている作業の1つだという事です。
まずは結論から。もちろん可能です。実線や点線、一点鎖線等色々な線が引けます。太さや色も変更可能です。

手作業で出来る事はマクロでも同じ様に設定する事が出来ます
色々な機能がありますので全部紹介していると大変な事になってしまいます。ここではこの3つに絞って紹介していきます。
- 格子状に実線を引く(1行のコードで対応可能です)
- 部位毎に実線を引く
- 線を消す
これで部位毎に線を引ける様になるのですが個別に指示を出すのでそれだけコードも多くなります。文字が多くなってコードが読みにくくなります。
この件についてもしっかり解決させていきます。「With」というコードを使って対策していきます。
罫線やWithステートメントは質問が多かった内容ですのでリストを沢山使って出来るだけ整理した情報を用意してみました。
記事の難易度
2で丁度よいです。
オンラインミーティング
私オンラインでVBAの講師をしております。「何か具体的な仕事をVBAに置き換えたい」等皆様各自でやりたい事を持ち込んでいただき一緒に解決させるという事もやっています。
ご興味ありましたら以下リンク先からご連絡ください。

前回記事
前の記事【動画】VBAの基本的なコードの書き方オートフィルやコピペを使う
この記事を読むとわかる事
罫線の引き方が分かります。
- 罫線が引けるようになります
- 罫線を消せるようになります
- withステートメントが使えるようになります

マクロ
Withステートメントについては罫線だけではなく全てのコードに対して有効な機能です。使えるようになるとコードの質が1段階上がります。早速勉強していきましょう。
2分動画
動画はシリーズ内の動画と合わせて500円で販売しています。詳しくはこちらをご覧ください。

今回は罫線の引き方とWithステートメントを紹介する動画です
動画の中からさらに要点を絞って解説していきます。
罫線について紹介
線の引き方や消し方、各要素について出来るだけ簡潔に紹介していきます。
罫線を引く
このコードは「オブジェクト.プロパティ=代入する値」の型です。LineStyleプロパティにxlContinuousを代入しています。xlContinuousが実線です。
Bordersプロパティで線の場所を指定しない時はRangeオブジェクトで指定した範囲に格子状に線が引かれます。
この1行のコードで対象範囲すべてに線が引けるので簡単にリストを用意する事が出来ます。
Range(“B2:F10”).Borders.LineStyle = xlContinuous
線を引く場所を指定したい時はBordersプロパティの後に線を引く場所(定数)を指定しましょう。VBAにはプロパティやメソッドに指定する値があらかじめ決められているものがあります。
線を引く場所に関しては以下リストのような定数が用意されています。
定数 | 値 | 罫線の種類 |
---|---|---|
xlEdgeTop | 8 | セル範囲の上 |
xlEdgeRight | 10 | セル範囲の右 |
xlEdgeLeft | 7 | セル範囲の左 |
xlEdgeBottom | 9 | セル範囲の下 |
xlSideHOrizontal | 12 | セル範囲内の水平線 |
xlSideVertical | 11 | セル範囲内の垂直線 |
xlDiagonalDDown | 5 | 右下がり斜め線 |
xlDiagonalUp | 6 | 右上がり斜め線 |
例を紹介します。
- Range(“A1”).Borders(xlEdgeTop).LineStyle = xlContinuous
- Range(“A1”).Borders(8).LineStyle = xlContinuous
罫線を消す
動画の中では一括で罫線を消しています。これは前回記事のメソッドの時に紹介したコードを使っています。こちらにリンクを用意しておきます。
罫線は書式設定の部類に入るのでClearFormatsで線を消す事が出来ます。
ただしこれはセルの書式設定だけクリアしてくださいというコードです。指定したセルにかかる書式設定をクリアにするというコードです。その一環で罫線も削除されるという事になります。
部位毎に線を消したい時は線を書いた時と同じようにLineStyleプロパティにxlLineStyleNoneを代入しましょう。
Range(“A1”).Borders(xlEdgeTop).LineStyle = xlLineStyleNone
例を書いておきました。Bordersプロパティの引数に定数を指定する事になります。
線の種類を変える
線の種類についてもリストを用意します。
定数 | 値 | 線の種類 |
---|---|---|
xlContinuous | 1 | 実線 |
xlDash | -4115 | 破線 |
xlDashDot | 4 | 一点鎖線 |
xlDashDotDot | 5 | 二点鎖線 |
xlDot | -4118 | 点線 |
xlDouble | -4119 | 二重線 |
xlLineStyleNone | -4142 | 線なし |
xlSlantDashDot | 13 | 斜め破線 |
使い方はイコールの右側に書くだけです。xlContinuousやxlLineStyleNoneの説明をしているので分かりますよね。
線の太さを変える
線の太さについてもリストを用意します。元からある線の太さを変えるというわけではなく「実線の〇〇線を書く」というコードです。一点鎖線の太線とかは書けません。ご注意ください。
定数 | 値 | 線の太さ |
---|---|---|
xlHairline | 1 | 極細線 |
xlThin | 2 | 細線 |
xlMedium | -4138 | 中太線 |
xlThick | 4 | 太線 |
Range(“A1”).Borders(xlEdgeTop).Weight = xlThick
線の色を変える
ここはマイクロソフトさんのリンクを用意しておきます。
Rangeオブジェクトの背景色を変える時に使ったColorIndexプロパティがここでも登場します。指定範囲の上の線を赤に変えるコードの例を書いておきます。
Range(“A1”).Borders(xlEdgeTop).ColorIndex = 3
Withステートメント
同じコードがたくさんあるとVBEの中に文字が多くなり読みにくいです。VBAは同じコードはまとめて良いですよという決まりがあります。
Withステートメントを使ってコードを書くと同じコードをまとめる事ができます。コードがスッキリします。
使用方法としてはWithの後にまとめたいコードを書きます。最後にEnd Withを書きます。
With~End Withの間にいるコードはWthの後に書いたコードを持っている体でVBAがコードを読んでくれます。
ただしWithステートメントで省略された部分にはドット付ける様にしてください。これも決まります。
使用例を紹介
上のかたまりはWithステートメントを使ってないコードです。下のかたまりは上のコードに対してWithステートメントを使ってまとめてあります。

コードはWクリックで選択出来ます。その後「Ctrl+C」でコピー、「Ctrl+V」で貼付けです。
'Withステートメント使用前
Range("B2:F10").Borders(xlEdgeTop).LineStyle = xlContinuous
Range("B2:F10").Borders(xlEdgeBottom).LineStyle = xlContinuous
Range("B2:F10").Borders(xlEdgeRight).LineStyle = xlContinuous
Range("B2:F10").Borders(xlEdgeLeft).LineStyle = xlContinuous
'Withステートメント使用後
With Range("B2:F10")
.Borders(xlEdgeTop).LineStyle = xlContinuous
.Borders(xlEdgeBottom).LineStyle = xlContinuous
.Borders(xlEdgeRight).LineStyle = xlContinuous
.Borders(xlEdgeLeft).LineStyle = xlContinuous
End With
Withステートメントはコード全般に使える
Withステートメントは罫線を書く時だけではなくコード全般で使う事の出来る機能です。
Withでくくられた部分は1つの作業という風に見せる事が出来るのでコードの可読性が上がります。ただし慣れないとWithでくくる事自体が難しくメリットを見出せません。
無理なくコードを書きましょう
初心者のうちはWithステートメントを使う方が負担なのでまずは気にせずコードを書いてください。余裕があったらコードを書いた後にWithを使ってコードを減らしていくという使い方をしましょう。
裏を返せばWithステートメントを想定したコードが書ける様になったら初心者卒業に近付きます。積極的にチャレンジしてみましょう。
まとめ
罫線とWithステートメントについて解説しました。VBAは文字や数字をセルに入力するだけではなく罫線を引く事も出来ます。
書式設定には全てコードがあるので興味ある方は調べて使ってみてください。
- 罫線の引き方
- 罫線の種類を指定する方法
- Withステートメントについて

マクロ
一連のシリーズを通してみると簡単なコードは書ける様になったのと罫線も引けるようになりましたね。単発作業なら手作業からVBAに置き換える事が出来そうな気がしませんか?
自分の仕事をVBAに置き換えるというのが一番勉強になります。理由は自身が手作業でやっている事なので何をやりたいかが明確だという事です。
加えてマクロを組めれば作業が一瞬で終わるので「なんとか完成させよう」という思いが働き頑張れます。モチベーションというやつですね。気持ちも大事な要素なんですよ。
次からはシリーズ序盤で「マクロの記録では生成できないコード」だと紹介した条件分岐と繰り返し処理について解説していきます。
ここまで出来る様になると初心者の中の初心者は卒業です。
次回の記事VBAのForNextステートメントで複数セルの仕事を1秒で片付ける