【EXCEL VBA | Resizeプロパティ】取得したセルの範囲を拡張

スポンサーリンク

Resizeプロパティ

Rangeオブジェクトで指定されている範囲を拡張します。

構文

Rangeオブジェクト.Resize(行方向サイズ, 列方向サイズ)

行方向サイズ・・・新しい範囲の行数を指定する。省略すると最初に指定した範囲と同じ。指定する場合は1以上の整数で指定。

列方向サイズ・・・ 新しい範囲の列                                                                                                                                                                                                                                                                                                      数を指定する。省略すると最初に指定した範囲と同じ。指定する場合は1以上の整数で指定。

使い方

基本形はこちらです。

Sub sample()

    'シートの指定
    Dim sheet As Worksheet
    Set sheet = ThisWorkbook.Sheets("Resize")

    '最初のセル範囲
    Dim 最初のセル範囲 As Range
    Set 最初のセル範囲 = sheet.Range("B2")
    最初のセル範囲.Select

    '範囲の拡張
    最初のセル範囲.Resize(3, 4).Select
    
End Sub

変数「最初のセル範囲」が、Resize前の範囲です。

ここでは分かりやすいように、Selectしています。

最初のセル範囲に対してResize(3, 4)を行っています。

動画で動きを確認しましょう!

最初に選択した範囲は、B2セルなので1セルだけでしたが、Resizeした後のSelectでは、範囲が3行・4列に拡張されたことが分かります。

ちなみに、引数を省略すると、最初に指定した範囲と同じ大きさになります。

これも試してみましょう。

Sub sample()

    'シートの指定
    Dim sheet As Worksheet
    Set sheet = ThisWorkbook.Sheets("Resize")

    '最初のセル範囲
    Dim 最初のセル範囲 As Range
    Set 最初のセル範囲 = sheet.Range("B2:D6")
    最初のセル範囲.Select
   
        
    '範囲の拡張
    最初のセル範囲.Resize(, 4).Select
    
End Sub

最初のセル範囲を、「B2:D6」としました。

5行3列の範囲です。

これをResizeする際に、行方向の引数を省略して「.Resize(,4)」としました。

どのようになるか確認しましょう。

行方向の引数は指定していないので、Resizeした後の行数は最初のセル範囲のまま5行ですね。

列方向だけ4に拡張されました。

これは列方向の引数を省略した場合も同じような動きになります。

まとめ

こんな一覧があったときに、Find関数かなんかで、一致する名前のセルを取得して、

そのセルのRangeオブジェクト.Resize(1,3)みたいに拡張すると見つかったデータの全ての項目が取得出来ますね(^o^)

さっきのサンプルコードを少しいじります。

最初のセル範囲のところをFindに変えてます。

Sub sample()

    'シートの指定
    Dim sheet As Worksheet
    Set sheet = ThisWorkbook.Sheets("Resize")

    '最初のセル範囲
    Dim 最初のセル範囲 As Range
    Set 最初のセル範囲 = sheet.Range("A:A").Find(What:="白鳥 美和子")
    最初のセル範囲.Select
   
    '範囲の拡張
    最初のセル範囲.Resize(1, 3).Select
    
End Sub

実行してみましょう。

「白鳥 美和子」のデータが取得出来ることがわかります。

実務の場合は、Selectってことは無いと思いますが、コピーして別のところに貼り付けるなど適宜処理は変更してくださいね(^o^)