HOME > 即効テクニック > Excel VBA > セル操作関連のテクニック > セルを結合/解除する(Merge/UnMergeメソッド)

セルを結合/解除する(Merge/UnMergeメソッド)|Excel VBA

セル操作関連のテクニック

セルを結合/解除する(Merge/UnMergeメソッド)

(Excel 2000/2002/2003/2007/2010/2013/2016)

■セルを結合/解除する

セルを結合するには、RangeオブジェクトのMergeメソッドを使います。
サンプル1は、セル範囲A1:C3を結合します。

●サンプル1●

Sub Sample1()
    Range("A1:C3").Merge    '--- A1:C3を結合
End Sub 

Mergeメソッドの引数AcrossにTrueを設定すると、選択範囲のセルを行ごとに結合します。
サンプル2は、セル範囲A1:C1、A2:C2、A3:C3の3つの結合セルを作成します。

●サンプル2●

Sub Sample2()
    Range("A1:C3").Merge True  '--- A1:C1、A2:C2、A3:C3を結合
End Sub

結合セルを解除するには、RangeオブジェクトのUnMergeメソッドを使います。
このとき、結合されているセルの中の「任意の1つ以上のセル」を指定すれば結合セルを解除できます。逆に、結合セルの中の一部だけを解除することはできません。
セル範囲A1:C3が結合されているとき、サンプル3は結合を解除します。

●サンプル3●

Sub Sample3()
    Range("A1").UnMerge    '--- A1:C3の結合を解除
End Sub

■結合対象のセルに値が入力されている場合

サンプル1ではセル範囲A1:C3を結合しました。 結合させるための記述は非常に単純ですが、実行するには注意が必要です。

対象のセル範囲の中に値が入力されたセルが2つ以上ある場合、データを失うことになるので、確認メッセージが表示されます。
ここで[キャンセル]ボタンを押すとMergeメソッドを実行できずに実行時エラーが発生してしまうので、ケースに応じて次のようにプログラミングを行ってください。

次のサンプル4は、確認メッセージを表示しないでセルを結合します。
結合するとセル範囲のデータのうち、左上端にあるデータ以外は失われます。

●サンプル4●

Sub Sample4()
   Application.DisplayAlerts = False  '--- 確認メッセージを非表示
   Range("A1:C3").Merge
   Application.DisplayAlerts = True   '--- 確認メッセージを表示
End Sub

次のサンプル5は、データが失われる場合にユーザーが結合するかどうかを判断できるようにしています。[キャンセル]ボタンを押してもエラーは無視されます。
On Error Resume Nextステートメントを先に記述しておけば、エラーが発生しても、実行を中断せずに次のステートメントを実行できることを利用しています。

●サンプル5●

Sub Sample5()
    On Error Resume Next   '--- エラーが発生しても無視
    Range("A1:C3").Merge
End Sub

●補足●

RangeオブジェクトのMergeCellsプロパティでセルを結合することもできます。
MergeCellsプロパティにTrueを設定すると結合し、Falseを設定すると結合を解除します。
解除するときに、結合セルの中の任意のセルを1つ以上指定すればよい点もUnMergeメソッドと同じです。

Range("A1:C3").MergeCells = True '--- A1:C3を結合
Range("A1").MergeCells = False '--- A1:C3の結合を解除