7/18/2019

Excel。マクロで罫線を記録して作ると不要な行だらけなので、Excel VBAでつくると楽【Ruled line】

Excel。マクロで罫線を記録して作ると不要な行だらけなので、Excel VBAでつくると楽

<Excel VBA>

なんで、Excel VBAを勉強したほうがいいのですか?というご質問があったりします。色々あるのですが、なんで、マクロの記録ではなくて、Excel VBAの構文を入力したほうがいいのか、そのうちの一つを紹介していきます。

今回は、具体的に罫線で確認をしてみましょう。

Excel VBAを知らなくても、マクロの記録を使うことで、操作を記録することができます。Excel VBAに不慣れな人は、その方法で十分なのですが、範囲が変わるなど、修正が発生すると、マクロの記録では、不便なケースがあります。

このため、マクロの記録ではなくて、直接、Excel VBAで作る方がいいよといわれるわけです。

【マクロの記録で罫線】

次の表があります。

マクロの記録を使って罫線を引くExcel VBAを作っていきます。

開発タブの「マクロの記録」をクリックします。

マクロの記録ダイアログボックスが表示されますので、今回は、「罫線マクロの記録」というマクロ名で作成します。

OKボタンをクリックすると、記録がスタートしますので、単純な格子の罫線を引いていきます。

操作が終了したら、マクロの終了ボタンをクリックして、記録を止めます。

このように罫線が引けていますが、Excel VBAはどのように書かれたのか確認してみましょう。

Sub 罫線マクロの記録()
    Range("A1:C6").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
End Sub

確認すると、Webサイトを作るときにCSSというファイルを作るのですが、それと同じ考え方で、左・上・下・右・垂直・水平をそれぞれ設定しているだけです。
ただ、「見なかったことにする」なんて人もいそうですね。

非常にわかりにくい…

そこで、Excel VBAで直接構文を作ると、数行で作ることができます。

Sub 罫線ExcelVBA()
    Range("a1").CurrentRegion.Borders.LineStyle = True
End Sub

たったこれだけです。実質。一行です。
では、実行してみましょう。

同じように罫線が引けました。

このようにマクロの記録では、不要な行で溢れている場合があるので、修正する場合など効率が悪化する可能性があります。

では、説明をしておきましょう。

Range("a1").CurrentRegion.Borders.LineStyle = True

A1を起点として、CurrentRegionは、隣接するセルの範囲、つまり、表ということです。

そして、Borders.LineStyle = True
Bordersは、罫線ということですね。

LineStyleは線種を意味しています。
TrueはONだと思ってもらえればわかりやすいかと思います。

これで、表の四辺に罫線を表示することができます。
ちなみに、Falseと入力すると、罫線を消すことができます。

なお、線種や色、そして太さを変更したい場合は、その指示を与える必要がありますが、講師の罫線だけでしたら、たった一行だけで、OKなわけです。