【VBA入門】セルの結合と解除(Merge、UnMerge、MergeCells)

ExcelVBAでは、Merge・UnMerge・MergeCellsを使用してセルの結合と解除を行うことができます。

この記事では、セルの結合と解除について

・セルの結合とは
・セルを結合、解除する方法

といった基本的な内容から

・結合したセルの値を取得する方法
・セルが結合されているかを判定する方法

など応用的な使い方についても解説していきます。

Excelでは、見栄えを理由にセルを結合することがしばしばあります。

ExcelVBAから結合されたセルを扱うこともあります。

そのようなときのために、例を交えながら詳しく解説していきます。

セルの結合とは

Excelでは、セルを結合することができます。

セルを結合するためには、次の画像のようにセルを選択した状態で、ツールバーからセルの結合を選択します。

vba_merge_cell11

結合されたセルは、次の画像のように表示されます。

vba_merge_cell12

また、Excelではセルの結合を解除することができます。

セルの結合を解除するためには、次の画像のようにセルを選択した状態で、ツールバーからセル結合の解除を選択します。

vba_merge_cell13

結合が解除されたセルは、次の画像のように表示されます。

vba_merge_cell14

セルを結合、解除する方法

ExcelVBAでは、セルの結合と解除を行うことができます。

Mergeでセルを結合する方法

Mergeメソッドでセルを結合するためには、次のように記述します。

開始セルは範囲の一番左上のセルで、終了セルは範囲の一番右下のセルです。

次の画像のような場合、開始セルがB2になり、終了セルがD3になります。

vba_merge_cell98 0

次のサンプルコードでは、セルB2からセルD3までの範囲を結合するためRange("B2:D3").Mergeとしています。

[実行結果]

vba_merge_cell22

実行結果の画像のセルB2からセルD3までの範囲が結合されていることが確認できます。

1行ずつまとめて結合する方法

Mergeメソッドは引数にTrueもしくはFalseを指定することができます。

Trueを指定した場合はセル範囲を行ごとに結合することができます。

指定を省略した場合の既定値はFalseです。

引数をTrueで指定した場合について、サンプルコードで確認しましょう。

[実行結果]

vba_merge01

UnMergeでセルの結合を解除する方法

UnMergeメソッドでセルの結合を解除するためには、次のように記述します。

次のサンプルコードでは、セルB2からセルD3までの範囲の結合を解除するためRange("B2:D3").UnMergeとしています。

[実行結果]

vba_merge_cell23

実行結果の画像のセルB2からセルD3までの範囲の結合が解除されていることが確認できます。

MergeCellsでセルを結合、解除する方法

次のサンプルコードでは、セルB2からセルD3までの範囲を結合するためRange("B2:D3").MergeCells = Trueとしています。

[実行結果]

vba_merge_cell22

実行結果の画像のセルB2からセルD3までの範囲が結合されていることが確認できます。

次のサンプルコードでは、セルB2からセルD3までの範囲の結合を解除するためRange("B2:D3").MergeCells = Falseとしています。

[実行結果]

vba_merge_cell23

実行結果の画像のセルB2からセルD3までの範囲の結合が解除されていることが確認できます。

このようにMergeCellsプロパティTrueを指定するとセルの結合を行うことができます。

また、Falseを指定するとセルの結合の解除を行うことができます。

結合したセルの値を取得する方法

セルの値を取得するためには、Valueプロパティを使用します。

例えば、次の画像のような年月を含む表があるとします。

vba_merge_cell31

次のサンプルコードでは、セルB3の値を取得するためにv = Range("B3").Valueとしています。

[実行結果]

vba_merge_cell32

次のサンプルコードでは、セルB4の値を取得するためにv = Range("B4").Valueとしています。

[実行結果]

vba_merge_cell31

実行結果の2つの画像を比較すると2番目のサンプルだけ値が設定されていません。

これは結合したセルでは、先頭のセルだけが値を持つためです。

そこで、結合したセルの値を取得するために、次の通りMergeAreaプロパティを使用します。

[実行結果]

vba_merge_cell33

実行結果の画像から結合されたセルの値が取得されたことが確認できます。

セルが結合されているかを判定する方法

MergeCellsでセルが結合されているかを判定する方法

次のようにMergeCellsプロパティでセルが結合されているかを判定することができます。

[実行前] vba_merge_cell22

[実行後] vba_merge_cell41

このサンプルコードでは、セルB2が結合されているか判定するためにIf Range("B2").MergeCells Then … Else … End Ifとしています。

その後、結合されているか、結合されていないかをメッセージボックスで表示しています。

実行後の画像からセルが結合されているか判定したことが確認できます。

If文については、こちらで詳しく解説していますので確認してください。

MergeAreaで結合しているセルの範囲を取得する方法

MergeAreaプロパティで結合しているセルの範囲を取得するためには、次のように記述します。

次のサンプルコードでは、セルB2の結合している範囲を取得するため、mArea = Range("B2").MergeAreaとしています。

[実行前]

vba_merge_cell22

[実行後]

vba_merge_cell72

確認の為に、mArea.Selectで結合されたセルを選択しています。

実行後の画像から、セルB2の結合している範囲が取得されていることが確認できます。

まとめ

いかがでしたか?

今回は、セルの結合と解除について解説しました。

Excelで見栄えを整えるのは時間がかかりますので、ExcelVBAで自動化してみるのもいいですね。

もし、ExcelVBAでセルの結合と解除を行う機会があれば、この記事を思い出してみてください!

Excel VBAを最短で習得したい方へ

元々ITリテラシーの高い方やプログラムの学び方がわかっている方であれば、この記事通りに進めていけば、Excel VBAを独学で習得することができるでしょう。

ただし、実際の学習期間中はつまづいている時間がほとんどです。

「なかなかやり遂げられ無い、挫折してしまった」
「時間が足りない」
「情報が少なくどう調べればいいかわからない」
「エラーを解決することができない」

このような悩みを抱えている方も少なく無いと思います。

  • もう挫折したくない
  • 本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい
  • 自分だけのカリキュラムで効率的に勉強したい
そんな方はお気軽に侍エンジニア塾までご相談ください。

お一人お一人に専属のインストラクターがつくので、より深くExcel VBAについて学習することできます。

まずは『無料体験レッスン』で、弊社のコンサルタントと一緒にあなた専用の学習方やカリキュラムを考えてみませんか?

Excel VBAならではの学習方法や、現役エンジニアから貴重なアドバイスを受けることができます。

詳しくは下の画像をクリックして弊社サービス内容をご確認ください。

cta2_vba2

LINEで送る
Pocket

書いた人

イシキ マコト

イシキ マコト

フリーランスのエンジニアです。
最近では、プログラミング関連の記事を作成するライターとしても活動しています。

趣味と業務の両方でプログラミング言語をいくつも学んできたので
その経験を活かして分かりやすい記事を作成できればと考えています。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説