Resizeプロパティでセル範囲をサイズ変更

vbaresizeeyecatch

エクセルVBAのResizeプロパティは今あるセル範囲を再設定することが出来るプロパティです。
Offsetプロパティと合わせると、よりユーティリティなプロパティになります。

こんにちは、じゅんぱ店長(@junpa33)です。

今回は、いとも容易くセルの指定範囲を変更させることが出来るプロパティについてです。

RangeオブジェクトのResizeプロパティについて説明します。

Resizeプロパティの選択範囲カンタン設定方法

vbaresize006

Resizeプロパティは、対象のセル範囲の行数と列数を変更した新しいセル範囲を、Rangeオブジェクトとして取得することが出来ます。

元のセル範囲を新しいセル範囲に変更する方法として、

「元のセル範囲の左上端のセル」を基準セルとして、新たに行数と列数をカウントします。

したがって、「元のセル範囲の左上端のセル」は基準位置として場所固定されますので、

動かすことが出来ません。

この場所固定された「元のセル範囲の左上端のセル」を移動させる方法としては、Offsetプロパティを併用する方法があります。

Resizeプロパティの構文

Resizeプロパティの記述方法としてはこのようになります。

構文
  • Rangeオブジェクト.Resize(RowSize, ColumnSize)
引数説明
RowSize新しく設定する範囲の行数を指定します。
引数を省略すると、新しくは行数を変更しないと判断されます。
ColumnSize新しく設定する範囲の列数を指定します。
引数を省略すると、新しくは列数を変更しないと判断されます。

基本的な使い方

Resizeプロパティの基本的な使い方としては、次のような簡単なコードでセルの選択範囲を変更させることが可能です。

セルC3を選択します。背景色を黄色にしておきます。

Resizeサンプル1
Sub Resizeサンプル1()
 Range("C3").Select
 Range("C3").Interior.Color = RGB(255, 255, 0)
End Sub
vbaresize001
セル範囲を行数3、列数5でリサイズする
Resizeサンプル2
Sub Resizeサンプル2()
 Range("C3").Select
 Selection.Resize(3, 5).Select
End Sub
vbaresize003

基準セルC3からの行数と列数をカウントして範囲が設定されました。

このResizeプロパティだけでは、基準セルを動かすことは出来ません。

そこで、Offsetプロパティを利用して基準セルそのものを移動させることにします。これによって、シート上のどこにでもセルの選択範囲を動かせるようになります。

基準セルをOffsetで移動させ、セル範囲を行数3、列数5でリサイズする
Resizeサンプル3
Sub Resizeサンプル3()
 Range("C3").Select
 Selection.Offset(4, -1).Resize(3, 5).Select
End Sub
vbaresize003

基準セルの位置が、OffsetプロパティによってセルC3からセルB7に移動しました。

ちなみに、次のコードでも同じ結果が得られます。(ResizeとOffsetの記述位置を逆にしました)

Resizeサンプル4
Sub Resizeサンプル4()
 Range("C3").Select
 Selection.Resize(3, 5).Offset(4, -1).Select
End Sub

Resizeプロパティ カンタン実用例

雑誌の発売日リストから、ピッキングしたい雑誌を雑誌コードを使って、その関係するデータを抜き取るVBAコードです。

最もシンプルなタイプのコードですが、発売日リストの行数ボリュームが可変で有ったり、雑誌コードの抽出方法を関数やメソッドを使った方法に変更したりとか、データボリューム次第でVBAコード組み立てを変更する必要はあると思います。

雑誌コードからそのデータ行を抽出し表示します。

vbaresize004
雑誌コードからデータ行を抽出
Resizeサンプル5
Sub Resizeサンプル5()
    Dim i As Long
        For i = 1 To 10
            If Cells(i, 5) = Cells(17, 4).Value Then
                Cells(i, 5).Offset(, -3).Resize(, 9).Select
                Range("B19:J19") = Selection.Value
            End If
        Next i
End Sub
vbaresize005

雑誌コードのデータ列からOffsetプロパティで左へ3列ずらし、データ行の全9列をResizeで範囲選択しています。

参考記事

Offsetプロパティの使い方についてはこの記事を参考にしてください。

vbaoffseteyecatch Offsetプロパティは指定範囲を移動させる

Resizeプロパティ まとめ

Resizeプロパティは簡単に利用することが出来ますので、ぜひ使っていきましょう。

Offsetプロパティとセットで覚えておきましょう。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。