Excel VBA

【Excel VBA】【マクロ】【Tips】罫線をサッと整える関数を作ろう(引数1つ。ちょっと上級者向け)

こんにちは!Lenocoです。本日も見てくださりありがとうございます。

今回は前回に引き続き「罫線を自動で引く関数」を作ってみましょう。
前回は引数が2つでしたが、今回は1つで作ってみます。

【Excel VBA】【マクロ】【Tips】罫線をサッと整える関数を作ろう(引数2つ。わかりやすく初心者向け)こんにちは!Lenocoです。本日も見てくださりありがとうございます。 今回は「罫線を自動で引く関数」を作ってみましょう。 罫線を自動...

罫線を自動で引く関数(ちょっと上級者向け)

前回は引数2つ(全体のセル範囲と、タイトルのセル範囲)で罫線をひく関数を作ってみました。今回は「表の左上のセル」のみ引数として渡し、同じように罫線を引く関数を作ってみましょう。
※コードは違いますが、出来上がりは同じです。

コード①(関数)

Sub DrawBorders2(rng As Range)
    
    '全体の罫線、外枠の設定
    With rng.CurrentRegion
        .Borders.LineStyle = xlContinuous
        .BorderAround LineStyle:=xlContinuous, Weight:=xlMedium
    End With
    
    'タイトルの枠設定
    With Range(rng, rng.End(xlToRight))
        .BorderAround LineStyle:=xlContinuous, Weight:=xlMedium
    End With
    
End Sub

コード②(実行)

Sub TestDrawBorders2()
    Call DrawBorders2(Range("B2"))
End Sub

コードの説明

DrawBordersに引数を渡して呼び出します。
表の左上のセル(B2)のみ渡します。
関数側で、全体に細い罫線と外側に太い罫線を設定、
タイトルの外側に太い罫線を設定します。
左上のセルから全体の範囲を取得するために、CurrentRegionプロパティを使用します。
(基準セルから、空白行や空白列で囲まれた範囲の有効範囲を取得することができます)

rng.CurrentRegion

また、基準のセル(B2)からEnd(xlToRight)を使うことでタイトルの右端セルを取得することができます。
Rangeで基準セル、右端セルを指定し、タイトルの範囲を取得することができます。

Range(rng, rng.End(xlToRight))

さいごに

こちらの引数1つバージョンですが、
必ず周りが空白セルで囲まれていることが条件となります。
表と隣り合ったセルに入力があると、そこも表の一部とみなされ、
意図しない動きになってしまいます。
また、タイトルに空白セルが無いようご注意ください。
空白セルがあると、基準のセルからEnd(xlToRight)をしたときに
空白セルの手前までがタイトルの範囲だとみなされてしまいます。

上の条件が満たせない場合には、以下の引数2つバージョンでお試しくださいね!
全体の範囲、タイトルの範囲を指定するので問題なく罫線がひけますよ!

【Excel VBA】【マクロ】【Tips】罫線をサッと整える関数を作ろう(引数2つ。わかりやすく初心者向け)こんにちは!Lenocoです。本日も見てくださりありがとうございます。 今回は「罫線を自動で引く関数」を作ってみましょう。 罫線を自動...

Lenoco

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です