0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

帳票の見出しを整える、セル結合・結合解除・スタイル適用の3つのマクロ

0
Last updated at Posted at 2026-10-05

帳票の見出しを整える、セル結合・結合解除・スタイル適用の3つのマクロ

タグ: Excel VBA 業務効率化 Tips 初心者
投稿先: Qiita


はじめに

請求書や日報の見出しは、セルを結合して中央に置き、色やフォントをそろえて見栄えを整えます。逆に、他の部署から届いた「見出しが結合されたままの表」は、並べ替えやフィルタの前に結合を解く必要があります。この記事では、そんな帳票まわりの整形を数秒で終わらせる3つのマクロを、使う場面とあわせて紹介します。

1. タイトル行を結合して、中央に置く

MergeCellsFormattingは、選択したセル範囲を1つに結合して、水平・垂直とも中央揃えにするマクロです。結合時の確認ダイアログは出さずに実行します。

Sub MergeCellsFormatting()
    On Error GoTo ErrorHandler

    Dim rng As Range

    If TypeName(Selection) <> "Range" Then
        MsgBox "セル範囲を選択してから実行してください", vbCritical, "エラー"
        Exit Sub
    End If

    Set rng = Selection

    If rng.Cells.Count < 2 Then
        MsgBox "2つ以上のセルを選択してください", vbCritical, "エラー"
        Exit Sub
    End If

    Application.DisplayAlerts = False
    With rng
        .Merge
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
    End With
    Application.DisplayAlerts = True

    MsgBox "セルを結合しました", vbInformation, "完了"

    Exit Sub

ErrorHandler:
    Application.DisplayAlerts = True
    MsgBox "エラーが発生しました:" & vbCrLf & Err.Description, vbCritical, "エラー"
End Sub

使う場面: A1:F1を選択して実行すると、表の幅いっぱいのタイトル行になります。入力済みの文字は左上のセルのものだけが残り、ほかのセルの値は消えるので、タイトルは結合前に左上のセルへ入れておきます。

2. 結合された見出しを解除して、全セルに値を入れ直す

UnmergeCellsFormattingは、選択範囲にある結合セルを解除し、結合されていた全セルに元の値を入れ直すマクロです。

Sub UnmergeCellsFormatting()
    On Error GoTo ErrorHandler

    Dim rng As Range
    Dim cell As Range
    Dim mergedArea As Range
    Dim mergedValue As Variant

    If TypeName(Selection) <> "Range" Then
        MsgBox "セル範囲を選択してから実行してください", vbCritical, "エラー"
        Exit Sub
    End If

    Set rng = Selection

    For Each cell In rng
        If cell.MergeCells Then
            Set mergedArea = cell.MergeArea
            mergedValue = mergedArea.Cells(1, 1).Value
            mergedArea.UnMerge
            mergedArea.Value = mergedValue
        End If
    Next cell

    MsgBox "セルの結合を解除しました", vbInformation, "完了"

    Exit Sub

ErrorHandler:
    MsgBox "エラーが発生しました:" & vbCrLf & Err.Description, vbCritical, "エラー"
End Sub

使う場面: 部署名が縦に結合された一覧を受け取ったとき、選択して実行すると「営業部」が結合範囲の全行に入ります。そのまま並べ替えやフィルタ、ピボットテーブルに使えるデータになります。

3. スタイル名を指定して、見出しの見た目をそろえる

SetCellStyleは、選択範囲にExcel組み込みのセルスタイルを適用するマクロです。実行するとスタイル名の入力欄が出ます。

Sub SetCellStyle()
    On Error GoTo ErrorHandler

    Dim rng As Range
    Dim styleName As String

    If TypeName(Selection) <> "Range" Then
        MsgBox "セル範囲を選択してから実行してください", vbCritical, "エラー"
        Exit Sub
    End If

    Set rng = Selection

    styleName = InputBox("適用するスタイル名を入力してください" & vbCrLf & _
        "例: Good / Bad / Neutral / Heading 1 / Title", "スタイル名", "Good")
    If styleName = "" Then Exit Sub

    On Error Resume Next
    rng.Style = styleName
    If Err.Number <> 0 Then
        MsgBox "スタイル「" & styleName & "」が見つかりません", vbCritical, "エラー"
        Exit Sub
    End If
    On Error GoTo ErrorHandler

    MsgBox "スタイル「" & styleName & "」を適用しました", vbInformation, "完了"

    Exit Sub

ErrorHandler:
    MsgBox "エラーが発生しました:" & vbCrLf & Err.Description, vbCritical, "エラー"
End Sub

使う場面: 見出し行を選択して「見出し 1」を入力すると、選んだ範囲に見出し用の書式がまとめて付きます。使える名前は[ホーム]→[セルのスタイル]に並んでいるものです(日本語版なら「良い」「見出し 1」など、お使いのExcelの表示どおりに入力します)。存在しない名前を入れたときは、見つからない旨のメッセージが出て止まります。

まとめ

帳票の見出しは、「まとめる」「ほどく」「そろえる」の3つができると扱いやすくなります。MergeCellsFormattingでタイトルを整え、UnmergeCellsFormattingで受け取った表をデータとして使える形にし、SetCellStyleで見た目をそろえる——ここまで読み進めたあなたは、毎月の帳票づくりを仕組みにできる人です。

紹介した3つを含む、VBAマクロを100本、サイトにまとめて公開しています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?