t-hom’s diary

主にVBAネタを扱っているブログ…とも言えなくなってきたこの頃。

VBA 複雑な罫線をVBAで描き分ける

Twitterでお題が流れてきたので乗っかってみた。

これの本人返信ツイートでマクロは禁止ですと書いてあったんだけど気にせずにマクロ記述時間込みでトライアル。

結果、マクロ記述と実行を合われて4分15秒で完成。記述込みだとマクロ使って1分は逆に無理だな。。

書いたマクロはこちら。

Sub hoge()
    Dim r As Range
    For Each r In Selection
        If r.Interior.Color = vbYellow Then
            r.Borders.LineStyle = XlLineStyle.xlContinuous
            If r.Offset(1, 0).Interior.Color = vbYellow Then r.Borders(xlEdgeBottom).LineStyle = XlLineStyle.xlDash
            If r.Offset(0, 1).Interior.Color = vbYellow Then r.Borders(xlEdgeRight).LineStyle = XlLineStyle.xlDash
            If r.Offset(-1, 0).Interior.Color = vbYellow Then r.Borders(xlEdgeTop).LineStyle = XlLineStyle.xlDash
            If r.Offset(0, -1).Interior.Color = vbYellow Then r.Borders(xlEdgeLeft).LineStyle = XlLineStyle.xlDash
        End If
    Next
End Sub

使い方

まず手動で描きだしたいセルをCtrl+ドラッグやCtrl+クリックで選択する。
f:id:t-hom:20180831211202p:plain

それを黄色く塗りつぶす。
f:id:t-hom:20180831211301p:plain

あとは塗りつぶした範囲が入るように適当に範囲選択して、
f:id:t-hom:20180831211350p:plain

マクロを実行すると、こうなる。
f:id:t-hom:20180831211430p:plain

最後に全選択して塗りつぶしをクリアし、表示メニューから枠線を消すとできあがり。

f:id:t-hom:20180831211559p:plain

お題と形違うけど。。まぁ趣旨は合ってるからいいや。

以上

追記

元記事がはてなブログだったようなので引用
www.waenavi.com

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。