Home » ExcelVBA Rangeオブジェクト » セル結合 » Resize(2, 1).Mergeとは

対象:Excel2010, Excel2013, Windows版Excel2016

「resize(2, 1).merge意味」
という検索キーワードで、このサイト『インストラクターのネタ帳』へのアクセスがありました。

「〇〇.Resize(2, 1).Merge」といったコードをどこかで見かけ、その意味を調べていらしたのでしょう。

「resize merge マクロ」
のようなキーワードでのアクセスも時折あります。
これも同じくRange.ResizeプロパティとRange.Mergeメソッドを組み合わせたコードの意味を調べていらしたのではないかと推測しています。

[スポンサードリンク]

Range.Mergeメソッドの挙動

まずRangeオブジェクトのMergeメソッドの挙動を確認しましょう。

Mergeは、セルを結合するだけのメソッドです。

例えば、
  Range("A1:A3").Merge
を実行するとA1:A3セルが結合されます。

これだけです。Range.Mergeメソッド自体は決して難しくありません。

Range.ResizeはRangeオブジェクトを返すプロパティ

RangeオブジェクトのResizeプロパティは、Rangeオブジェクトのサイズを変更するプロパティで、サイズ変更されたセル範囲を表すRangeオブジェクトを返します。

第1引数には行数を、第2引数には列数を指定します。

拙著『いちばんやさしいExcel VBAの教本』のLesson 52で、プロパティには2種類あることをお伝えしています。

プロパティは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).Select
は「ActiveCell.Resize(2, 1)」が、アクティブセルを基準に2行1列のセル範囲を表すRangeオブジェクトを返し、そのRangeオブジェクトに対してResizeメソッドを実行してセル結合が行われます。

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » セル結合 » Resize(2, 1).Mergeとは

TrackBack:0

TrackBack URL
[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » セル結合 » Resize(2, 1).Mergeとは

「セル結合」の記事一覧

検索


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

.