このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【VBA】Resizeプロパティの使い方(注意事項あり)

2023年3月26日

今回はRangeオブジェクトのResizeプロパティの使い方を紹介します。

複数範囲を指定したいときには、とても便利がプロパティなので、ぜひ活用してみてください。

また、使うに当たって少しだけ注意事項(勘違いしやすい点)があるので念のため確認するのをおすすめします。

VBAが難しいと感じたら
自分で作るのが難しいと感じたらご相談ください。
ココナラにて、VBAの作成を受け付けています。
ご相談はこちらから

Resizeプロパティの使い方

行方向・列方向に伸ばす
Sub UseResize()
    
    'A1:A2セルが選択される(行方向のみ範囲変更)
    Range("A1").Resize(2).Select
    
    'A1:B1セルが選択される(列方向のみ範囲変更)
    Range("A1").Resize(, 2).Select
    
    'A1:B2セルが選択される(行方向・列方向で範囲変更)
    Range("A1").Resize(2, 2).Select
End Sub

Resizeプロパティの使い方を実感してもらうため、このようなサンプルコードを作成してみました。

ステップ実行をしてセルの選択範囲がどのように変化するか確認してみてください。

Resizeプロパティの引数の書き方は上の3種類で、行方向のみ範囲変更、列方向のみ範囲変更といった指定の仕方ができます。

Resizeプロパティのメリット

Sub ResizeMerit()
    
    With ActiveSheet
        'CellsとResizeを組合せる方法
        .Cells(1, 1).Resize(2, 2).Select
        
        'RangeとCellsを組合せる方法
        .Range(.Cells(1, 1), .Cells(2, 2)).Select
    End With
End Sub

Resizeプロパティを使うメリットは、Range(Cells,Cells)によりセル範囲を指定する方法と比較するとよく分かります。

そのメリットは大きく次の2つがあります。

  1. シートの指定を間違えにくい
  2. 変更するときは1箇所書き換えるだけで済む

1. シートの指定を間違えにくい

Range(Cells,Cells)の組合せで使用する場合は、各Cellsでシートを指定する必要があります。(サンプルコードではWith文でアクティブシートを指定しています)

指定を忘れて各Cellsのシートが違うものになると実行時エラーが発生します。

それに対してResizeプロパティは最初のセルでシートを指定しておけばエラーになることはありません。

2. 変更するときは1箇所書き換えるだけで済む

プログラムを変更する必要が出てきたとき、Range(Cells,Cells)だと2つのセルを変更する必要があります。

それに対してResizeプロパティならば、Cells側かResizeプロパティの引数の片方を変更するだけで済みます。

For文のiなどが含まれていると範囲が想像しづらいので、プログラムを編集するのがかなり気楽になります。

注意事項:複数範囲でも基準セルから指定される

Sub ResizeCaution()
    
    '×:A1:B2が拡大されてA1:D4セルになる
    '〇:A1セルが基準となってA1:C3セルになる
    Range("A1:B2").Resize(3, 3).Select
End Sub

Resizeプロパティで間違いがちなのは、Rangeオブジェクトが複数範囲の場合です。(サンプルコードではRange(“A1:B2"))

この場合、複数範囲がさらに拡大されてA1:D4セルに広がる、というイメージを持つかもしれませんがこれは誤りです。

あくまでRange(“A1:B2")の左上のA1セルが基準となって、変更後の範囲が決まります。

そのためサンプルコードを実行するとA1:C3セルが選択されます。

左上の1セルを基準に範囲が変更されるのだと覚えておきましょう。

VBAが難しいと感じたら
自分で作るのが難しいと感じたらご相談ください。
ココナラにて、VBAの作成を受け付けています。
ご相談はこちらから

VBA

Posted by やろまい