「resize(2, 1).merge意味」
という検索キーワードで、このサイト『インストラクターのネタ帳』へのアクセスがありました。
「〇〇.Resize(2, 1).Merge」といったコードをどこかで見かけ、その意味を調べていらしたのでしょう。
「resize merge マクロ」
のようなキーワードでのアクセスも時折あります。
これも同じくRange.ResizeプロパティとRange.Mergeメソッドを組み合わせたコードの意味を調べていらしたのではないかと推測しています。
Range.Mergeメソッドの基本
まずRangeオブジェクトのMergeメソッドの基本を確認しましょう。
Range.Mergeはセルを結合するだけのメソッドです。
例えば、
Range("A1:A3").Merge
を実行するとA1:A3セルが結合されます。
これだけです。Range.Mergeメソッド自体は決して難しくありません。
Range.ResizeはRangeオブジェクトを返すプロパティ
RangeオブジェクトのResizeプロパティは、Rangeオブジェクトのサイズを変更するプロパティで、サイズ変更されたセル範囲を表すRangeオブジェクトを返します。
第1引数には行数を、第2引数には列数を指定します。
拙著『いちばんやさしいExcel VBAの教本』のLesson 52で、プロパティには2種類あることをお伝えしています。
Range.Resizeは2種類のプロパティのうち、オブジェクトを返すほうのプロパティで、コードが実行されるとサイズ変更されたセル範囲を表すRangeオブジェクトを返します。
Range.Resizeプロパティの挙動
具体的なRange.Resizeプロパティの挙動を確認しましょう。
例えば
Cells(1, 1).Resize(2, 1)
は、Cells(1, 1)で取得したA1セルを基準にして、サイズを2行1列に変更した、A1:A2セルを表すRangeオブジェクトを返します。
これだけでは挙動を確認し辛いので、Range.Selectメソッドを組み合わせてみます。
「Cells(1, 1).Resize(2, 1)」にRange.Selectメソッドを組み合わせた、
Cells(1, 1).Resize(2, 1).Select
を実行するとA1:A2セルが選択されます。
「Cells(1, 1).Resize(2, 1)」がA1:A2セルを表すRangeオブジェクトを返し、そのRangeオブジェクトを選択するSelectメソッドが実行されたからです。
Range,Resizeプロパティの引数を変更した
Cells(1, 1).Resize(3, 1).Select
を実行すると、A1:A3セルが選択され、
Cells(1, 1).Resize(1, 3).Select
を実行すると、行数は変更されず列数だけが「3」に変更されるのでA1:C1セルが選択されます。
「Cells(1, 1)」を、別のRangeオブジェクトを返すプロパティに変更することもできます。例えば、
ActiveCell.Resize(2, 1).Select
を、G7セルがアクティブな状態で実行すれば、「ActiveCell.Resize(2, 1)」でG7セルを基準に2行・1列のセルを表すRangeオブジェクトが取得できるので、G7:G8セルが選択されます。
Resize(2, 1).Mergeの挙動
で、「〇〇.Resize(2, 1).Merge」は、
Cells(1, 1).Resize(2, 1).Select
や、
ActiveCell.Resize(2, 1).Select
の最後が、Range.Selectメソッドから、この記事の最初に確認したRange.Mergeメソッドになっているだけです。
Cells(1, 1).Resize(2, 1).Merge
は「Cells(1, 1).Resize(2, 1)」が、A1:A2セルを表すRangeオブジェクトを返し、そのRangeオブジェクトに対してResizeメソッドを実行するので、A1:A2セルが結合されます。
ActiveCell.Resize(2, 1).Merge
は「ActiveCell.Resize(2, 1)」が、アクティブセルを基準に2行1列のセル範囲を表すRangeオブジェクトを返し、そのRangeオブジェクトに対してMergeメソッドを実行してセル結合が行われます。
最終更新日時:2023-05-25 16:23
Home » Excel VBA Rangeオブジェクト » 結合セル » Excel VBAのResize(2, 1).Mergeとは