罫線の指定について ~ Borders.item(なんちゃら)という指定

昨日は半ばお遊びで、マクロの記録で作成したコードを一行にまで圧縮してみた。
infoment.hatenablog.com

今日は、この続きを少しだけ。
f:id:Infoment:20190731220058p:plain

昨日、罫線の種類と太さについて、少し触れてみた。しかし考えてみると、自分でもきちんと内訳を確認したことが無かった。そこで調べてみたところ(実際に描画してみたところ)、以下の関係であることが分かった。
f:id:Infoment:20190731220318p:plain

なるほど、「xlDashDotDot」って何のこと?と思っていたが、二点鎖線のことだったのか。納得。

ところで以前から、このBordersについては一つの不満があった。例えば、こんなマクロの時。

Sub BorderTest()
    Range("B2").Borders(xlEdgeLeft).LineStyle = xlContinuous
    Range("B2").Borders(xlEdgeRight).LineStyle = xlContinuous
End Sub

似たような部位があるので、Withステートメントで括りたい。しかし似ているようで、ほとんど共通部分が無いのだ。上記の例で言えば、こんな風にしかならない。

Sub BorderTest()
    With Range("B2")
        .Borders(xlEdgeLeft).LineStyle = xlContinuous
        .Borders(xlEdgeRight).LineStyle = xlContinuous
    End With
End Sub

これでは行数ばかり増えて、ほとんど旨味が無い。また、マクロの記録からこの記述に見慣れていたため、この記述方法に最近まで何の疑問もなく過ごしていた。

そして最近のこと。ふと思った。例えば、シートのSelectionChangeイベントで、こんな風に書いてみる。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    MsgBox Target(1).Address & vbNewLine & Target.Item(1).Address
End Sub

結果、同じものが返ってきた。
f:id:Infoment:20190731221538p:plain

これはBordersでも、同じことが言えるんじゃなかろうか。早速試してみた。

Sub BorderTest()
    With Range("B2").Borders
        .Item(xlEdgeLeft).LineStyle = xlContinuous
        .Item(xlEdgeRight).LineStyle = xlContinuous
    End With
End Sub

結果、最初に書いたものと変わらぬ結果を得ることが出来た。
f:id:Infoment:20190731221757p:plain

短くなったのは、ほんの数文字だけ。でも、個人的には満足してる。
知ってる人には、当たり前?私は、最近まで知りませんでした(TдT)

参考まで。