VBAで罫線を引く1行のコードで格子状に実線が入る部位毎のコードも紹介

お知らせこの記事は初心者用マクロ学習講座|勉強範囲を限定&12本の動画で早く効果を実感の関連記事です

VBAは書式設定を変える事も可能

「VBAは罫線も引けるのでしょうか?」という質問をいただく事があります。比較的質問の中では多い部類に入ります。という事は皆さん気になっている作業の1つだという事です。

まずは結論から。もちろん可能です。実線や点線、一点鎖線等色々な線が引けます。太さや色も変更可能です。

マクロ
マクロ

手作業で出来る事はマクロでも同じ様に設定する事が出来ます

色々な機能がありますので全部紹介していると大変な事になってしまいます。ここではこの3つに絞って紹介していきます。

  • 格子状に実線を引く(1行のコードで対応可能です)
  • 部位毎に実線を引く
  • 線を消す

これで部位毎に線を引ける様になるのですが個別に指示を出すのでそれだけコードも多くなります。文字が多くなってコードが読みにくくなります。

この件についてもしっかり解決させていきます。「With」というコードを使って対策していきます。

罫線やWithステートメントは質問が多かった内容ですのでリストを沢山使って出来るだけ整理した情報を用意してみました

記事の難易度

2で丁度よいです。

記事の難易度
易しい
1
2
3
4
5
難しい

オンラインミーティング

私オンラインでVBAの講師をしております。「何か具体的な仕事をVBAに置き換えたい」等皆様各自でやりたい事を持ち込んでいただき一緒に解決させるという事もやっています。

ご興味ありましたら以下リンク先からご連絡ください。

全国可【オンライン】リモートでマクロをイチから勉強してみませんかExcelVBAで事務仕事を効率化 (VBAで定時に帰ろう) 下関のパソコンの生徒募集・教室・スクールの広告掲示板|ジモティー
【ジモティー】ExcelVBAという言葉を聞いたことありませんか。「VBAとは何ですか?マクロなら聞いたことあるけど・・・」という回答の方が多いと思います… (VBAで定時に帰ろう) 下関のパソコンの生徒募集・教室・スクールの広告掲示板|ジ...

前回記事

前の記事【動画】VBAの基本的なコードの書き方オートフィルやコピペを使う

メソッドの使い方について解説しています

この記事を読むとわかる事

罫線の引き方が分かります。

記事からわかる事
  1. 罫線が引けるようになります
  2. 罫線を消せるようになります
  3. withステートメントが使えるようになります
簡単ですよ

マクロ

Withステートメントについては罫線だけではなく全てのコードに対して有効な機能です。使えるようになるとコードの質が1段階上がります。早速勉強していきましょう。

2分動画

動画はシリーズ内の動画と合わせて500円で販売しています。詳しくはこちらをご覧ください。

マクロ
マクロ

今回は罫線の引き方とWithステートメントを紹介する動画です

罫線の引き方が分かる動画を用意しました

動画の中からさらに要点を絞って解説していきます。

罫線について紹介

線の引き方や消し方、各要素について出来るだけ簡潔に紹介していきます。

罫線を引く

このコードは「オブジェクト.プロパティ=代入する値」の型です。LineStyleプロパティにxlContinuousを代入しています。xlContinuousが実線です。

Bordersプロパティで線の場所を指定しない時はRangeオブジェクトで指定した範囲に格子状に線が引かれます。

この1行のコードで対象範囲すべてに線が引けるので簡単にリストを用意する事が出来ます。

セルB2からF10に格子状に実線を引く

Range(“B2:F10”).Borders.LineStyle = xlContinuous

線を引く場所を指定したい時はBordersプロパティの後に線を引く場所(定数)を指定しましょう。VBAにはプロパティやメソッドに指定する値があらかじめ決められているものがあります。

線を引く場所に関しては以下リストのような定数が用意されています。

定数罫線の種類
xlEdgeTop8セル範囲の上
xlEdgeRight10セル範囲の右
xlEdgeLeft7セル範囲の左
xlEdgeBottom9セル範囲の下
xlSideHOrizontal12セル範囲内の水平線
xlSideVertical11セル範囲内の垂直線
xlDiagonalDDown5右下がり斜め線
xlDiagonalUp6右上がり斜め線
罫線を引く場所です

例を紹介します。

セルA1の上だけ線を書くコード
  • Range(“A1”).Borders(xlEdgeTop).LineStyle = xlContinuous
  • Range(“A1”).Borders(8).LineStyle = xlContinuous

罫線を消す

動画の中では一括で罫線を消しています。これは前回記事のメソッドの時に紹介したコードを使っています。こちらにリンクを用意しておきます。

罫線は書式設定の部類に入るのでClearFormatsで線を消す事が出来ます。

ただしこれはセルの書式設定だけクリアしてくださいというコードです。指定したセルにかかる書式設定をクリアにするというコードです。その一環で罫線も削除されるという事になります。

部位毎に線を消したい時は線を書いた時と同じようにLineStyleプロパティにxlLineStyleNoneを代入しましょう。

セルA1の上だけ線を消すコード

Range(“A1”).Borders(xlEdgeTop).LineStyle = xlLineStyleNone

例を書いておきました。Bordersプロパティの引数に定数を指定する事になります。

線の種類を変える

線の種類についてもリストを用意します。

定数線の種類
xlContinuous1実線
xlDash-4115破線
xlDashDot4一点鎖線
xlDashDotDot5二点鎖線
xlDot-4118点線
xlDouble-4119二重線
xlLineStyleNone-4142線なし
xlSlantDashDot13斜め破線
使用頻度少ないかもしれませんがリスト化しました

使い方はイコールの右側に書くだけです。xlContinuousやxlLineStyleNoneの説明をしているので分かりますよね。

線の太さを変える

線の太さについてもリストを用意します。元からある線の太さを変えるというわけではなく「実線の〇〇線を書く」というコードです。一点鎖線の太線とかは書けません。ご注意ください。

定数線の太さ
xlHairline1極細線
xlThin2細線
xlMedium-4138中太線
xlThick4太線
よく使うのは細線になります
セルA1の上だけ太線を引くコード

Range(“A1”).Borders(xlEdgeTop).Weight = xlThick

線の色を変える

ここはマイクロソフトさんのリンクを用意しておきます。

Rangeオブジェクトの背景色を変える時に使ったColorIndexプロパティがここでも登場します。指定範囲の上の線を赤に変えるコードの例を書いておきます。

セルA1の上の線を赤に変えるコード

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は文字や数字をセルに入力するだけではなく罫線を引く事も出来ます。

書式設定には全てコードがあるので興味ある方は調べて使ってみてください。

本日勉強したこと
  1. 罫線の引き方
  2. 罫線の種類を指定する方法
  3. Withステートメントについて
リストが作れますね

マクロ

一連のシリーズを通してみると簡単なコードは書ける様になったのと罫線も引けるようになりましたね。単発作業なら手作業からVBAに置き換える事が出来そうな気がしませんか?

自分の仕事をVBAに置き換えるというのが一番勉強になります。理由は自身が手作業でやっている事なので何をやりたいかが明確だという事です。

加えてマクロを組めれば作業が一瞬で終わるので「なんとか完成させよう」という思いが働き頑張れます。モチベーションというやつですね。気持ちも大事な要素なんですよ。

次からはシリーズ序盤で「マクロの記録では生成できないコード」だと紹介した条件分岐と繰り返し処理について解説していきます。

ここまで出来る様になると初心者の中の初心者は卒業です。

タイトルとURLをコピーしました