アフィリエイト広告を利用しています

セルの書式設定を一括で変更する

表の罫線、セルのフォントカラー、見出し行の色などの書式設定を一括で設定するマクロの作成を説明します。

上の表を下の表のように、マクロを使って書式設定をします。

目次

データを入力するマクロ

次のマクロを実行すると、次のような表が作成されます。

Sub サンプル2120()

  Range("B2") = "品番"
  Range("C2") = "日付"
  Range("D2") = "商品名"
  Range("E2") = "価格"
  Range("F2") = "数量"
  Range("G2") = "小計"

  Range("B3") = "A-1"
  Range("B4") = "A-2"
  Range("B5") = "A-3"
  Range("B6") = "A-4"
  Range("B7") = "A-5"

  Range("C3").FormulaR1C1 = "2/1/2020"
  Range("C4").FormulaR1C1 = "2/2/2020"
  Range("C5").FormulaR1C1 = "2/3/2020"
  Range("C6").FormulaR1C1 = "2/4/2020"
  Range("C7").FormulaR1C1 = "2/5/2020"

  Range("D3") = "テレビ"
  Range("D4") = "エアコン"
  Range("D5") = "冷蔵庫"
  Range("D6") = "扇風機"
  Range("D7") = "電子レンジ"

  Range("E3") = 80000
  Range("E4") = 120000
  Range("E5") = 210000
  Range("E6") = 5000
  Range("E7") = 30000

  Range("F3") = 12
  Range("F4") = 5
  Range("F5") = 6
  Range("F6") = 25
  Range("F7") = 4

  Range("G3") = "=E3 * F3"
  Range("G4") = "=E4 * F4"
  Range("G5") = "=E5 * F5"
  Range("G6") = "=E6 * F6"
  Range("G7") = "=E7 * F7"

End Sub

書式設定を一括で変更するマクロ

次のマクロを実行すると、上の表が次の表のように書式が設定されます。

Sub サンプル2125()

Dim col As Range

'グリッド線を非表示
ActiveWindow.DisplayGridlines = False


Range("B2").Select    
With Selection
    Range("B2:G7").Select

    '選択セル範囲に対して書式設定
    With Selection
        '上端に実線
        With Selection.Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .ThemeColor = msoThemeColorAccent6
            .Weight = xlMedium
        End With
        '下端に実線
        With Selection.Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .ThemeColor = msoThemeColorAccent6
            .Weight = xlMedium
        End With

        '行方向に点線
        With Selection.Borders(xlInsideHorizontal)
            .LineStyle = xlDot
            .ThemeColor = msoThemeColorAccent6
            .Weight = xlThin
        End With

        '数式セルのフォントカラー変更
        .SpecialCells(xlCellTypeFormulas).Font.ThemeColor = msoThemeColorAccent4

        '1行目(見出し行)の色を設定
        With .Rows(1).Interior
            .ThemeColor = msoThemeColorAccent6
            .TintAndShade = 0.5
        End With

        '各列についての書式を設定        
        For Each col In .Columns

          '列内の2つ目の値のデータ型によって書式を設定
          Select Case TypeName(col.Cells(2).Value)
            Case "String"
                col.HorizontalAlignment = xlLeft
            Case "Double"
                col.HorizontalAlignment = xlRight
                col.NumberFormatLocal = "#,###"
            Case "Date"
                col.HorizontalAlignment = xlCenter
                col.NumberFormatLocal = "mm/dd"
          End Select

          '列幅を自動設定し、それよりも少し大きくする
          col.EntireColumn.AutoFit
          col.ColumnWidth = col.ColumnWidth + 2
        Next
    End With
End With

Range("B2").Select

End Sub

コード解説

Dim col As Range
colを変数として宣言します。

ActiveWindow.DisplayGridlines = False
セルのグリッド線を非表示にします。(True で表示になります。)

Range(“B2”).Select
セルの位置を、B2のセルに指定します。

With Selection
Withステートメントを使って、行をまとめます。

Range(“B2:G7”).Select
次にセルB2からG7までの範囲を指定します。

With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ThemeColor = msoThemeColorAccent6
.Weight = xlMedium
End With
上端に実線で緑の線を引きます。

With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ThemeColor = msoThemeColorAccent6
.Weight = xlMedium
End With
下端に実線で緑の線を引きます。

With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlDot
.ThemeColor = msoThemeColorAccent6
.Weight = xlThin
End With
各行の内側に細い点線を引きます。

.SpecialCells(xlCellTypeFormulas).Font. _
ThemeColor = msoThemeColorAccent4
小計の数式セルの色を設定します。

With .Rows(1).Interior
.ThemeColor = msoThemeColorAccent6
.TintAndShade = 0.5
End With
見出し行の色を設定する。

For Each~Case
Next
各列について書式設定を繰り返す。

Select Case TypeName(col.Cells(2).Value)
列の2番めの値を調べる。

Case “String”
col.HorizontalAlignment = xlLeft
文字列のときは、左寄せにする。

Case “Double”
col.HorizontalAlignment = xlRight
col.NumberFormatLocal = “#,###”
データ型がダブルのときは、右寄せで3桁区切り。

Case “Date”
col.HorizontalAlignment = xlCenter
col.NumberFormatLocal = “mm/dd”
日付のときは、中央揃えで月/日の形にする。

col.EntireColumn.AutoFit
col.ColumnWidth = col.ColumnWidth + 2
列幅を自動的に調整して、少し大きくする。

テーマ色を確認する

テーマ色を確認するマクロです。

Sub サンプル2130()

Range("B2:F2").Select
With Selection.Borders(xlEdgeBottom)
    .LineStyle = xlContinuous
    .ThemeColor = msoThemeColorAccent1
    .Weight = xlThick
End With

Range("B4:F4").Select
With Selection.Borders(xlEdgeBottom)
    .LineStyle = xlContinuous
    .ThemeColor = msoThemeColorAccent2
    .Weight = xlThick
End With

Range("B6:F6").Select
With Selection.Borders(xlEdgeBottom)
    .LineStyle = xlContinuous
    .ThemeColor = msoThemeColorAccent3
    .Weight = xlThick
End With

Range("B8:F8").Select
With Selection.Borders(xlEdgeBottom)
    .LineStyle = xlContinuous
    .ThemeColor = msoThemeColorAccent4
    .Weight = xlThick
End With

Range("B10:F10").Select
With Selection.Borders(xlEdgeBottom)
    .LineStyle = xlContinuous
    .ThemeColor = msoThemeColorAccent5
    .Weight = xlThick
End With

Range("B12:F12").Select
With Selection.Borders(xlEdgeBottom)
    .LineStyle = xlContinuous
    .ThemeColor = msoThemeColorAccent6
    .Weight = xlThick
End With

End Sub

マクロの実行結果

日付、数値などの書式を設定する
セルのデータや書式を元に戻すマクロ【エクセルのセルを初期状態にする】

目次