銀河鉄道

【VBA】Resize changes the size of a cell range|範囲のリサイズ

サムネイル
[VBA]Resizerows and columns
セル範囲の
大きさを変えよう

範囲の大きさ?

何行×何列のサイズを変えたいときがあるから

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列 にする
B2B2: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.

MS Docs – Range.Resize より:

「そのまま」にする方法

  • 行や列を変えたくない場合は「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

Vocabulary

| Resize|リサイズ |
| Anchor Cell|基点セル |
| RowSize|行数 |
| ColumnSize|列数 |
| Element Count|要素数 |
| Omit Argument|引数省略 |

“How many rows and columns
do you want,
starting from here?”

著者

author
月うさぎ

編集後記:
この記事の内容がベストではないかもしれません。

記事一覧