【VBA】Resize changes the size of a cell range|範囲のリサイズ
作成日:2025-10-01
更新日:2025-10-04

セル範囲の
大きさを変えよう
大きさを変えよう

範囲の大きさ?

何行×何列のサイズを変えたいときがあるから
The Resize method changes the size of a cell range, starting from its top-left cell, based on the specified number of rows and columns.
行数と列数を変更する

サイズを変えること
(範囲の指定ではない)
Range("B2").Resize(3, 2)
→ B2:C4
が返る(3行×2列、左上はB2固定)。
- 起点は「元の範囲」の左上セル
Resize(RowSize, ColumnSize)
の引数は「要素数」- いくつ移動させるか
- インデックスではない

1行×1列 → 3行×2列 にする
(B2
→ B2:C4
)
基本構造|Basic Structure
Range.Resize(RowSize, ColumnSize)
- RowSize|行数:縦に何行にするか
- ColumnSize|列数:横に何列にするか
- 省略すると元のサイズが保持される
Valueとの組み合わせ| .Value
Resize
は範囲を変形するだけなので、実際のデータ代入には.Value
を組み合わせる。
Resize(0, 0)
はエラーになる(最小は1)
仕様
Resize(RowSize, ColumnSize)
- RowSize, ColumnSize ≥ 1
- 0 や負の値を渡すと Run-time error ‘1004’: Application-defined or object-defined error が出る
RowSize Optional Variant. The number of rows in the new range. The RowSize must be a positive number.
ColumnSize Optional Variant. The number of columns in the new range. The ColumnSize must be a positive number.
「そのまま」にする方法
- 行や列を変えたくない場合は「0を入れる」のではなく、引数を省略する
' 行数は変えずに列だけ3列にしたい
Range("B2").Resize(, 3)
' 列数は変えずに行だけ5行にしたい
Range("B2").Resize(5)
→ 省略したほうのサイズは元の範囲と同じになる
In VBA, Resize(0,0)
is invalid—use omitted arguments for “no change.”
「変えない」は 0 ではなく、省略で表現する
Code Sample
' 基本: 1セルを3行2列の範囲に広げる
Range("B2").Resize(3, 2).Select
' => B2:C4 を選択
' 配列を横に貼る(要素数を列数にする)
Dim ary As Variant
ary = Array("A", "B", "C")
Range("B2").Resize(1, UBound(ary) - LBound(ary) + 1).Value = ary
' 配列を縦に貼る(要素数を行数にする)
Range("B2").Resize(UBound(ary) - LBound(ary) + 1, 1).Value = WorksheetFunction.Transpose(ary)
' 正常:3行2列にリサイズ
Range("B2").Resize(3, 2).Select ' => B2:C4
' 正常:列数そのまま、行数5
Range("B2").Resize(5).Select ' => B2:B6
' 正常:行数そのまま、列数3
Range("B2").Resize(, 3).Select ' => B2:D2
' エラー:RowSize/ColumnSize に 0 は許されない
Range("B2").Resize(0, 0).Select ' => Run-time error 1004
Referenced Insights & Citations
- Microsoft. (n.d.). Range.Resize property (Excel). Retrieved from
https://learn.microsoft.com/en-us/office/vba/api/excel.range.resize
Vocabulary
| Resize|リサイズ |
| Anchor Cell|基点セル |
| RowSize|行数 |
| ColumnSize|列数 |
| Element Count|要素数 |
| Omit Argument|引数省略 |
“How many rows and columns
do you want,
starting from here?”
do you want,
starting from here?”
2025-10-01
編集後記:
この記事の内容がベストではないかもしれません。
記事一覧
-
ユーザーフォームにドラッグ&ドロップ 【VBA】ドラッグアンドドロップできるユーザーフォーム|ListView -
ユーザーフォームのタイトルバー非表示 【VBA】ユーザーフォームのタイトルバーを非表示にしてシステムっぽい見た目にする -
絶対値を取得 【VBA】絶対値を取得する|Abs -
ユーザーフォームを半透明にする 【VBA】ユーザーフォームを半透明にしてシートの内容が見えるようにする|waiting-form -
[VBA]Redim とRedim Preserve 【VBA】配列の要素数を決める|ReDim vs ReDim Preserve & Pythonとの違い -
終了のメッセージボックス 【VBA】マクロ終了時のメッセージ|タイム付きmsgbox