BLOG ブログ


2023.05.19 TECH

Excel 表内にて、特定の間隔で下線を引く方法。VBAのループ処理「For文とStepキーワード」

Excel表内で特定の間隔で下線を引く方法

VBAの習得に励んでいるWebディレクターのふるたです。

最近の業務にてエクセルで表を作成した際に、見た目を整えるために、5行ごとにアンダーライン(下線)を引いて欲しいと要望があり、VBAのループ処理を利用して実装した方法を備忘録として記載します。

やりたいこと

200行以上の表を作成した後に、見やすさの向上のため、5行ごとにアンダーライン(下線)を設定したい。

下線を引く前の状態(Before)
下線を引いた後のの状態(After)

5行単位で下線を引くと表が見やすくなりますね。
これをVBAのマクロを使って、一瞬で作成しましょう。

VBAのコード

Excelのリボンから開発を選択して、Visual Basic の編集画面にて下記コードを入力します。

Sub underlineStep5()
Dim i As Long
For i = 0 To 200 Step 5
    Range("A2:D2").Offset(i).Borders(xlEdgeBottom).LineStyle = xlContinuous
Next
End Sub

あとは、表のシートを表示させて作成したマクロ「underlineStep5」を実行すれば完了です。

コードの解説

マクロ名を設定

マクロを直接実行するため、Subプロシージャを作ります。
マクロ名は後から見返しても内容が判るように「underlineStep5」と設定。
※マクロ名は任意でOK。

マクロ名を設定するコード

ループ用の変数「i」を設定

ループ処理をするため、変数「i」を設定します。データ型は整数を意味する「Long」とします。「Integer」でも同じ整数を意味するので良いのですが、「Long」のほうが使える数値の範囲が大きいので、特に理由がなければ整数を指定する場合は「Long」で良いと思います。

Long型-2,147,483,648 ~ 2,147,483,647
Integer型-32,768 ~ 32,767
変数iをLong型で定義するコード

For 文(ループ)を設定

今回扱う表は、項目行が1、内容が200行あるため、0から200をループさせます。また、5行ごとにアンダーラインを引きたいので「Stepキーワード」を使用して「Step 5」として、変数「i」に代入します。
また、For文は最後に「Next」を記述するのがVBAのお作法です。

1行目から201行目まで、5行間隔でループさせるコード

指定のセル範囲の下辺に罫線(直線)を設定

セル範囲を指定して、直線のアンダーラインを引く設定をします。また、セル範囲を5行づつ下に移動させてループ処理を施します。

Range("A2:D2")表の初めの行を範囲指定
Offset(i)RangeオブジェクトのOffsetプロパティは、引数に設定した数だけ移動。引数は縦と横で2種設定できますが、1種の場合は縦方向で整数の場合は下に移動します。引数を変数「i」としているため、今回のケースでは、1行目、6行目、11行目、16行目・・・201行目 という順番で下に移動します。
Borders(xlEdgeBottom)RangeオブジェクトのBordersプロパティは、4種(上下左右)の罫線を引くことができます。引数に「xlEdgeBottom」を設定するとセルの下辺に罫線を設定できます。
LineStyle = xlContinuousBorderオブジェクトのLineStyleプロパティは、罫線の種類を設定できます。
行の下辺に罫線(アンダーライン)を設定。変数iを利用して、5行間隔で下に移動して罫線を設定するコード

解説は以上となります。

ちょっと応用編

上記のコードは、下線を引いたらそのままですが、下線を消すことができるようにすることと、ワークシート上にボタンを設置して、マウスのクリックでマクロを呼び出したいと思います。

下線を消すマクロを作成

Sub underlineDelete()
 Cells.Borders.LineStyle = xlLineStyleNone
End Sub

Cellオブジェクト」のコレクション「Cells」のプロパティ「Borders」を指定することで、指定したオブジェクトのすべての罫線にアクセスします。「xlLineStyleNone(罫線のスタイルなし)」を代入することで、下線を消すことができます。

ワークシートにボタンを設置

① 「開発タブ」を選択
② 「挿入」をクリック
ボタン(フォーム コントロール)を選択

開発タグから挿入を選択してボタンを選択する画面

ワークシートにボタンを設置

① 「下線を引く」ボタンを設置。ボタンの文言は右クリック→テキスト編集で修正可能。
② 「クリア」ボタンを設置。
③ それぞれのボタンに「マクロの登録」画面から、呼び出したい「マクロ名」を選択。

ワークシートにボタンを設置してマクロを選択する画面

完成

2種のボタンを設置することで、下線を引いたり、消したりすることが出来るようになりました。

下線を引くボタンとクリアボタンを設置できました。

おまけ

Bordersプロパティ

今回の例では、罫線を下線( Borders(xlEdgeBottom) )で設定しましたが、ご存じのとおりExcelでは他の辺や斜めにも線を引くことができます。

名前説明
xlDiagonalDown5範囲の各セルの左上隅から右下に実行されている罫線
xlDiagonalUp6左下隅から範囲内の各セルの右上隅に実行されている罫線
xlEdgeBottom9範囲内の下側の罫線
xlEdgeLeft7範囲の左端の罫線
xlEdgeRight10範囲の右端の罫線
xlEdgeTop8範囲内の上側の罫線
xlInsideHorizontal12範囲外の罫線を除く、範囲内のすべてのセルの水平罫線
xlInsideVertical11範囲外の罫線を除く、範囲内のすべてのセルの垂直罫線

LineStyleプロパティ

今回の例では、罫線を実線(LineStyle = xlContinuous)で設定しましたが、ご存じのとおりExcelには様々な線を設定できます。VBAで指定する際の線の値は下記となります。

名前説明
xlContinuous1実線
xlDash-4115破線
xlDashDot4一点鎖線
xlDashDotDot5ニ点鎖線
xlDot-4142点線
xlDouble-41192本線
xlLineStyleNone-4118線なし
xlSlantDashDot13斜破線

値について

上記の表にて「名前」に対して「値(番号)」が紐づいています。「名前」の代わりに「値(番号)」で指定してもプログラムは動きます。

ま、名前のほうがわかりやすいですけどね。

おまけ

VBAを学びはじめて間もないですが、なかなか面白いです。身近なエクセルを操作するプログラムなので結果がすぐに目に見えますし、Microsoftの公式ドキュメントも充実してますし、何より実務に直結するのでやりがいがあります。これからも少しづつ技術を取り入れて、ブログで紹介したいと思います。


一覧に戻る


LATEST ARTICLE 最新の記事

CATEGORY カテゴリー