Home » Excel VBA Rangeオブジェクト » Cellsプロパティ » Cellsを使ってセルを結合する

対象:Excel2007, Excel2010, Excel2013

「excel vba セルの結合 cells」
という、検索でこのサイト・インストラクターのネタ帳へのアクセスがありました。

Cellsプロパティを使った、セルの結合を行うExcel VBAのコードを探している方による検索です。

実務での利用シーンを考えると、Cellsプロパティだけではなく、他のプロパティもあわせて利用することになるはずですが、ここでは参考になりそうな、セル結合を行うマクロを3つご紹介します。

[スポンサードリンク]

Cellsを使わずにセル結合を行うサンプルマクロ

最初に、Cellsプロパティを使わない、セル結合の基本から確認しましょう。

以下のマクロを実行するとアクティブなシートのA1:B3セルが結合されます。

Sub セル結合_基本()
 Range("A1", "B3").Merge
End Sub

Rangeプロパティの引数を2つ指定すると、指定されたセル範囲全体を表すRangeオブジェクトを取得できます。

Excel.Global.Range

RangeオブジェクトのMergeメソッドを使うと、そのRangeオブジェクトが結合されます。

Excel.Range.Merge

これがVBAでセルの結合を行う際の基本です。

RangeとCellsを使ってセル結合を行うサンプルマクロ

次に、Cellsプロパティも使ったサンプルです。

以下のマクロでA6:B8セルが結合されます。

Sub セル結合_Cellsプロパティ()
 Range(Cells(6, "A"), Cells(8, "B")).Merge
End Sub

先にご紹介したRangeプロパティの2つの引数に、Cellsプロパティを使って返されるRangeオブジェクトを指定しているコードです。

「Cells(6, "A")」というオブジェクト式で6行目A列のセルであるA6セルを表すRangeオブジェクトを取得し、「Cells(8, "B")」というオブジェクト式で8行B列のセルであるB8セルを表すRangeオブジェクトを取得できます。

それらがRangeプロパティの第1・第2引数に指定されることで、「Range(Cells(6, "A"), Cells(8, "B"))」というオブジェクト式はA6:B8セルを表すRangeオブジェクトが取得できるわけです。そのRangeオブジェクトのMergeメソッドを呼ぶことでA6:B8セルが結合されます。

RangeプロパティとCellsプロパティを使ってセル範囲を指定するコードの応用です。

CellsとResizeを組み合わせてセル結合を行うサンプルマクロ

RangeプロパティとCellsプロパティを組み合わせた上記のマクロを応用すれば、実務で必要なセル結合マクロは作れるはずですが、Resizeプロパティを使って以下のような書き方もできます。

以下のマクロを実行するとA11:B13セルが結合されます。

Sub セル結合_Resizeプロパティ()
 Cells(11, "A").Resize(3, 2).Merge
End Sub

「Cells(11, "A")」というオブジェクト式で11行目A列のセルであるA11セルを表すRangeオブジェクトが取得できます。そのRangeオブジェクトのResizeプロパティを使って取得するセル範囲を拡大しています。

Excel.Range.Resize

「.Resize(3, 2)」と、Resizeプロパティの第1引数に「3」、第2引数に「2」が指定されているので、A11セルから3行2列拡大したA11:B13セルを表すRangeオブジェクトが取得できます。そのRangeオブジェクトのMergeメソッドが呼ばれてA11:B13セルが結合されます。

最終更新日時:2021-09-09 19:30

[スポンサードリンク]

Home » Excel VBA Rangeオブジェクト » Cellsプロパティ » Cellsを使ってセルを結合する

「Cellsプロパティ」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.