Excel VBAを使ってセル範囲を効率的に変更する方法を探していますか?この記事では、VBAのResizeプロパティを用いて、セル範囲をどのように変更できるのかを詳細に解説します。初心者から上級者まで、誰でも簡単に理解できるように、多数のオリジナルサンプルコードも提供します。
Resizeプロパティとは?
Resizeプロパティは、Excel VBAでセル範囲(Rangeオブジェクト)のサイズを変更するためのプロパティです。このプロパティを使うと、指定したセル範囲の行数や列数を変更できます。特に、大量のデータを扱う際や、動的に範囲を変更する必要がある場合に非常に便利です。
構文とその詳細
Resizeプロパティの基本的な構文は以下の通りです。
Range.Resize(RowSize, ColumnSize)- RowSize: 新しい範囲の行数を指定します。
- ColumnSize: 新しい範囲の列数を指定します。
名前付き引数ですが、これらは省略可能です。省略した場合、元の範囲の行数や列数がそのまま適用されます。
使用例とその詳細
基本的な使用例

Range("A1").Resize(3, 3).Selectこのコードは、A1セルを基点として3行3列の範囲(A1:C3)に変更します。Selectメソッドを使って、その範囲を選択状態にしています。
行数だけを指定する場合

Range("A1:C1").Resize(3).Selectこのコードは、A1:C1の範囲を基点として、行数を3行に変更します。結果としてA1:C3の範囲になります。列数は指定していないため、元の範囲の列数(3列)が適用されます。
列数だけを指定する場合

Range("A1:A3").Resize(, 3).Selectこのコードは、A1:A3の範囲を基点として、列数を3列に変更します。結果としてA1:C3の範囲になります。行数は指定していないため、元の範囲の行数(3行)が適用されます。
サンプルコードとその解説
サンプル1:5行5列の範囲に変更

Sub ResizeExample1()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' A1セルを基点に、5行5列の範囲に変更
    ws.Range("A1").Resize(5, 5).Value = "Sample"
End Subこのサンプルでは、ThisWorkbook.Sheets("Sheet1")でSheet1を指定しています。その後、A1セルを基点にして、5行5列の範囲(A1:E5)に”Sample”という値を入力しています。
サンプル2:最後の行まで範囲を拡張

Sub ResizeExample2()
    Dim ws As Worksheet
    Dim lastRow As Long
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' 最後の行を取得
    lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
    
    ' A1セルを基点に、最後の行まで範囲を拡張
    ws.Range("A1").Resize(lastRow, 1).Value = "Dynamic"
End Subこのサンプルでは、まず最後の行(lastRow)を取得しています。その後、A1セルを基点にして、最後の行までの範囲に”Dynamic”という値を入力しています。
Resizeプロパティに関するFAQ
Q:RowSizeやColumnSizeを省略するとどうなりますか?
A:RowSizeやColumnSizeを省略した場合、元の範囲の行数や列数がそのまま適用されます。例えば、Range("A1:A3").Resize(, 3) のように列数だけを指定した場合、行数は元の範囲(A1:A3)の3行が適用されます。
Q:Resizeプロパティで範囲を拡大した後、元に戻す方法は?
A:範囲を元に戻すには、再度Resizeプロパティを使って元のサイズに変更する必要があります。例:Range("A1:C3").Resize(1, 1) でA1セルだけに範囲を戻すことができます。
Q:ResizeプロパティとOffsetプロパティの違いは何ですか?
A:Resizeプロパティは範囲のサイズを変更しますが、Offsetプロパティは範囲の位置を移動します。両者はよく組み合わせて使用され、例えば、特定の範囲を選択した後にその範囲を拡大するといった使い方があります。
Q:Resizeプロパティを使っても、元のデータは影響を受けますか?
A:Resizeプロパティ自体は元のデータに影響を与えません。ただし、Resizeで範囲を変更した後にその範囲にデータを入力すると、当然ながら元のデータは上書きされます。
Q:Resizeプロパティは他のどのようなプロパティやメソッドと組み合わせて使えますか?
A:Resizeプロパティは、Select、Copy、Cut、Clear、Valueなど、多くのRangeオブジェクトのプロパティやメソッドと組み合わせて使用することができます。これにより、非常に柔軟なデータ操作が可能です。
Q:Resizeプロパティでエラーが出る場合の一般的な原因は?
A:Resizeプロパティでよくあるエラーの原因としては、指定したサイズがシートの最大行数や列数を超える場合、または指定した範囲が存在しない場合などがあります。エラーが出た場合は、まず指定しているサイズや範囲が正しいか確認してください。
関連動画
まとめと次のステップ
Resizeプロパティは、Excel VBAでセル範囲を効率的に変更するための非常に便利なプロパティです。この記事で紹介した各種の使い方や設定項目、サンプルコードを参考にして、是非ともこのプロパティをマスターしてください。
Excelのショートカットキーの練習
当サイトはショートカットキーの練習を実際の動きを確認しながら練習できる機能がついています。繰り返し指を動かして練習ができるので、ゲーム感覚で遊んでいくうちに自然とショートカットキーが使えるようになれます。ショートカットキーは暗記するよりも実際に手を動かして練習していったほうが習得が早くなるので、是非当サイトをブックマークに登録し定期的に練習してみてください。下記のSTARTキーを押下すると練習を始められます。
※推奨ブラウザ Google Chrome

 
			 
			 
			 
			 
			 
			 
			