【VBA】表全体を整形する

例えば以下の表を、

表全体を整形(実行前)
表全体を整形(実行前)


以下のように
 ・文字の横位置を「中央揃え」へ設定
 ・罫線を設定
できます!
※見出し行を除いた部分を整形できます。

表全体を整形(実行後)
表全体を整形(実行後)
PR

VBAコード

ここでは例として、
 ・シート「sample」のセル「B3」から下を
 ・文字の横位置を「中央揃え」へ設定し
 ・罫線を設定
します。

Option Explicit

Sub sample()
    
    Dim ws As Worksheet
    Dim startRange As Range
    Dim endRow As Double
    Dim endColumn As Double
    Dim endRange As Range
    
    '対象シートを設定
    Set ws = Worksheets("sample")

    '開始セルを取得 ※対象範囲の1番左上のセル
    Set startRange = ws.Range("B3")
    '最終行を取得(下から上へ見ていく)
    endRow = ws.Cells(Rows.Count, startRange.Column).End(xlUp).Row
    '最終列を取得
    endColumn = startRange.End(xlToRight).Column
    '最終セルを取得
    Set endRange = ws.Cells(endRow, endColumn)
    
    '最終セルが開始セルと同じかそれ以降である場合のみ整形
    If (startRange.Row <= endRange.Row) Then
        '表全体
        With Range(startRange, endRange)
            '文字の横位置を「中央揃え」へ設定
            .HorizontalAlignment = xlHAlignCenter
            '罫線を設定
            .Borders.LineStyle = xlContinuous
        End With
    End If
    
End Sub

「開始セル」として「対象範囲の1番左上のセル」を指定します(15行目)。
※状況に応じて修正してください。
※上記はセル「B3」にしています。

最終セルが開始セルと同じかそれ以降の場合のみ、整形を実施するようにしています(24行目)。

「Rangeオブジェクト」の「HorizontalAlignment」プロパティに「xlHAlignCenter」を指定することで、文字の横位置を「中央揃え」にします(28行目)。

「Rangeオブジェクト」の「Borders」プロパティで、「Bordersオブジェクト」を取得します(30行目)。

「Bordersオブジェクト」の「LineStyle」プロパティに「xlContinuous:実線」を指定することで、罫線を設定しています(30行目)。

「xlContinuous:実線」以外も設定できます。詳細は公式サイトをご確認ください。



PR

実行結果

表全体を整形できました。

表全体を整形(実行後)
表全体を整形(実行後)
PR

参考①

上記ではセルの位置を「中央揃え」にしていますが、
 ・セルの位置を「中央揃え」以外にしたい
 ・またはセルの位置を指定したい
場合は、以下の記事をご確認ください。

PR

参考②

可読性が良いとは思わないためオススメはしませんが、以下でも表全体(見出し行除く)を整形できます。
オススメはしないものの簡易な記載で実現可能のため、紹介だけしておきます。

Option Explicit

Sub sample()

    With Worksheets("sample").Range("B2").CurrentRegion
        '文字の横位置を「中央揃え」へ設定(見出しである最初の行を除く)
        .Resize(.Rows.Count - 1).Offset(1, 0).HorizontalAlignment = xlHAlignCenter
        '罫線を設定(見出しである最初の行を除く)
        .Resize(.Rows.Count - 1).Offset(1, 0).Borders.LineStyle = xlContinuous
    End With
    
End Sub
ポイント

「CurrentRegion」と「Resize」と「Offset」を使用する。

PR

参考③

表全体をクリアする方法は、以下の記事をご確認ください。

PR

参考④

上記のVBAコードで使用した以下の詳細は、公式サイトをご確認ください。

●「Rangeオブジェクト」の「HorizontalAlignment」プロパティ


●「Rangeオブジェクト」の「Borders」プロパティ


●「Bordersオブジェクト」の「LineStyle」プロパティ