「excel vba セルの結合 cells」
という、検索でこのサイト・インストラクターのネタ帳へのアクセスがありました。
Cellsプロパティを使った、セルの結合を行うExcel VBAのコードを探している方による検索です。
実務での利用シーンを考えると、Cellsプロパティだけではなく、他のプロパティもあわせて利用することになるはずですが、ここでは参考になりそうな、セル結合を行うマクロを3つご紹介します。
Cellsを使わずにセル結合を行うサンプルマクロ
最初に、Cellsプロパティを使わない、セル結合の基本から確認しましょう。
以下のマクロを実行するとアクティブなシートのA1:B3セルが結合されます。
Range("A1", "B3").Merge
End Sub
Rangeプロパティの引数を2つ指定すると、指定されたセル範囲全体を表すRangeオブジェクトを取得できます。
RangeオブジェクトのMergeメソッドを使うと、そのRangeオブジェクトが結合されます。
これがVBAでセルの結合を行う際の基本です。
RangeとCellsを使ってセル結合を行うサンプルマクロ
次に、Cellsプロパティも使ったサンプルです。
以下のマクロでA6:B8セルが結合されます。
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セルが結合されます。
Cells(11, "A").Resize(3, 2).Merge
End Sub
「Cells(11, "A")」というオブジェクト式で11行目A列のセルであるA11セルを表すRangeオブジェクトが取得できます。その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
- Newer:指定範囲内の指定されたTypeのShapeの数を返すPowerPointのFunctionプロシージャ
- Older:配列とTRANSPOSE関数を使って画像の位置とサイズをExcelに出力するパワポマクロ
Home » Excel VBA Rangeオブジェクト » Cellsプロパティ » Cellsを使ってセルを結合する