セルの結合・解除・参照

中級VBA

セルの結合・解除・参照

 セルの結合・解除には、Merge UnMergeメソッドを使用する方法と、MergeCellsプロパティにTrueFalseを設定する方法があります。
 また、結合されたセルを参照するには、MergeAreaプロパティを使います。
 それぞれの使い方を解説します。

セルの結合

 セルの結合を行うには、RangeオブジェクトのMergeメソッド。または MergeCellsプロパティにTrueを設定します。

Sub 結合セルの結合()
    Range("A1:A3").UnMerge
End Sub

Sub 結合セルの結合2()
    Range("A1:A3").MergeCells = True
End Sub

既に値がある場合

 結合を行うセルに既に値がある場合は、警告メッセージが出ます。

強制的に実行

 強行するとメッセージの通り、左上隅のセル値が結合セルの値となります。
 その場合は、メッセージを出さないようにすれば良いでしょう。
 この時、左上隅以外の値は失われてしまいます。

Sub 強制的にセル結合()
    '左上済以外の値は失われる
    Application.DisplayAlerts = False
    Range("A1:A3").Merge
    Application.DisplayAlerts = True
End Sub

セルに値があるか確認して処理

 他のセルにも値があるか確認して処理したい場合は、Range内の値を巡回して調査します。
 以下は、全ての値を結合しています。

Sub Range内の値を繋げてからセル結合()
    Dim c
    Dim str As String
    str = ""
    For Each c In Range("A1:A3")
        If c.Value <> "" Then
            str = str & c.Value & " "
            c.Value = ""
        End If
    Next c
    
    Range("A1") = str
    Range("A1:A3").Merge
End Sub

重複範囲

 以下のように、Rangeの範囲が既に他の結合範囲と重なっている場合は、全て包括したような挙動となります。
 既に値がある場合は上記の警告メッセージが出ます。

結合セルの解除

 結合されたセルを解除するには、RangeオブジェクトのUnMergeメソッド。または MergeCellsプロパティに False を設定します。
 結合解除は、結合されたセルの一部分を指定すればOKです。

Sub 結合セルの解除()
    Range("A2").UnMerge
End Sub

Sub 結合セルの解除2()
    Range("A2").MergeCells = False
End Sub

結合セルの参照

 結合されたセルを参照するには、結合された一部分のセルに対して、MergeAreaプロパティを使えば参照することができます。

Sub 結合セルの参照()
    Range("A2").MergeArea.Value = "日付"
End Sub

 上記の例では、Value を省略しても構いませんが、値を代入しているので、省略しない方が丁寧な書き方と言えるでしょう。

結合セルは右上隅が基準

 結合セルの右上隅がわかっていれば、そのセルを指定して値を代入する事が可能です。

Sub 結合セルの参照2()
    '左上隅ならば値を入力可能
    Range("A1") = "日付"
End Sub
タイトルとURLをコピーしました