セルの結合
セルの結合をする方法には2通りあります。
1つはMergeメソッド、もう1つはMergeCellsプロパティです。
どちらの場合も単一セルが指定された場合はセル範囲が指定されていないため結合されません。エラーにはならず正常に処理されます。
入力済みのセル同士を結合する場合、警告メッセージが表示されます。非表示にする方法は後述しています。
Mergeメソッドで結合
Mergeメソッドを使います。
指定したセル範囲を結合します。
Mergeメソッドの引数を省略するかFalseを設定した場合は、セル範囲全てを結合します。
Trueを設定した場合は、行単位で結合します。
省略またはFalseの場合
1 2 3 4 |
Sub MergeTest1() 'Range("A1:C2").Merge Call Range("A1:C2").Merge(False) End Sub |
Trueの場合
1 2 3 |
Sub MergeTest2() Call Range("A1:C2").Merge(True) End Sub |
MergeCellsプロパティで結合
MergeCellsプロパティにTrueを設定すると指定セル範囲を全て結合します。
1 2 3 |
Sub MergeCellsTrueTest() Range("A1:C2").MergeCells = True End Sub |
なお、MergeCellsプロパティの値を取得する際に、指定したセル範囲に既に結合されているセルとされていないセルが含まれている場合はNullが返却されます。
セルの結合の解除
結合セルの解除には2通りあります。
1つはUnMergeメソッド、もう1つは結合時と同じでMergeCellsプロパティです。
UnMergeメソッドで解除
結合セルの範囲内にあるセルを指定します。
解除のコードには2通りの書き方があります。
MergeAreaプロパティを書くか書かないかです。
まずはMergeAreaプロパティを書かない方法です。
1 2 3 |
Sub UnMergeTest() Range("A2").UnMerge End Sub |
次にMergeAreaプロパティを書く方法です。
結合セルの範囲を参照した上で解除する場合は、指定セルに対してMergeAreaプロパティで結合セルを参照した上で解除します。
1 2 3 |
Sub UnMergeTest2() Range("A2").MergeArea.UnMerge End Sub |
MergeAreaプロパティを省略してもしなくても、どちらも正しく動作します。おそらくですが、MergeAreaプロパティを省略した場合は暗黙でMergeAreaプロパティのようなもので結合セル範囲を判別しているものと思われます。
MergeCellsプロパティで解除
MergeCellsプロパティにFalseを設定すると指定セル範囲の結合を解除します。
1 2 3 |
Sub MergeCellsFalseTest() Range("A2").MergeCells = False End Sub |
警告メッセージを非表示にする
入力済みのセル同士を結合する場合、以下のメッセージが出て処理が止まります。
キャンセルを押した場合は実行時エラー1004が発生します。
このダイアログを表示させないようにするには「Application.DisplayAlerts = False」でメッセージを非表示にします。Trueで表示になります。
1 2 3 4 5 |
Sub MergeTest3() Application.DisplayAlerts = False Range("A1:C2").Merge Application.DisplayAlerts = True End Sub |
2行目は警告メッセージを表示しないようにし、4行目で表示するようにしています。