『Excel VBA 表計算とプログラミング学習サイト』では、アフィリエイトプログラムを利用して商品を紹介しています。

【VBA】Resizeプロパティ

【VBA】Resizeプロパティでセル範囲のサイズを変更します

VBAResizeプロパティ は Range オブジェクトの範囲を変更します。

Range.Resize(y,x)

引数の y には行数、x には列数を指定します。もとのセル範囲の左端の位置は固定されたまま、行方向に x 個、列方向に y 個のセルが選択されます。さっそく簡単なマクロを作って試してみましょう。

'[VBA] セル範囲のサイズを変更します
Sub Resize_Range_1()
  Selection.Resize(2, 3).Select
End Sub

とりあえず何でもいいので、適当なセル範囲を選択した状態で Resize_Range_1 を実行すると、行数 2, 列数 3 のセル範囲が選択されます。
 
VBA Resizeプロパティでセル範囲のサイズを変更
 
面白いですね。次はユーザーさんが好きな値を入れてセル範囲のサイズを変更するマクロを作ってみましょう。

'[VBA] 数値を入力してセル範囲のサイズを変更します

Sub Resize_Range_2()

  Dim x1 As Integer, y1 As Integer
  Dim x2 As Integer, y2 As Integer

  y1 = InputBox("行に加える数を指定してくださいな")
  x1 = InputBox("列に加える数を指定してくださいな")

  y2 = y1 + Selection.Columns.Count
  x2 = x1 + Selection.Rows.Count

  Selection.Resize(y2, x2).Select

End Sub

Resize_Range_2() を実行すると
「行に加える数を指定してくださいな
列に加える数を指定してくださいな」
というメッセージが出るので、好きな値を入力すると元のセル範囲に入力値を加えた大きさのセル範囲が選択されます。
 
今回は記事が短かったので、ChatGPT に Resizeプロパティを使った面白いマクロを作ってもらいました。

Sub StretchText()
    Dim rng As Range
    Set rng = Range("A1") ' 対象のセルを指定
    
    Dim text As String
    text = rng.Value ' セル内の文字列を取得
    
    Dim length As Integer
    length = Len(text) ' 文字列の長さを取得
    
    Dim direction As Integer
    direction = Int((4 - 1 + 1) * Rnd + 1) ' 1から4のランダムな整数を生成
    
    Select Case direction
        Case 1 ' 上に伸ばす
            rng.Resize(length, 1).Value = WorksheetFunction.Trim(text)
        Case 2 ' 下に伸ばす
            rng.Resize(length, 1).Offset(1, 0).Value = WorksheetFunction.Trim(text)
        Case 3 ' 左に伸ばす
            rng.Resize(1, length).Value = WorksheetFunction.Trim(text)
        Case 4 ' 右に伸ばす
            rng.Resize(1, length).Offset(0, 1).Value = WorksheetFunction.Trim(text)
    End Select
End Sub

StretchText() を実行すると、セルA1に入力された文字列がランダムな方向に伸びます。例えば、セルA1に「Hello」と入力されている場合、実行すると「Hello」が上に伸びたり、下に伸びたり、左に伸びたり、右に伸びたりします。

コメント

  1. あとりえこばと より:

    【AI解説】VBAのResize

    [ChatGPT] VBAのResizeプロパティは、配列や範囲のサイズを変更するために使用されます。具体的には、指定した範囲の行数や列数を変更することができます。Resizeプロパティは、次のような構文を持ちます。

    expression.Resize(RowSize, ColumnSize)

    ここで、expressionは範囲オブジェクトを表し、RowSizeとColumnSizeは整数値で、それぞれ変更後の行数と列数を指定します。以下に例を示します。

    Sub ReSizeSample()
      Dim rng As Range
      Set rng = Range("A1:B3") ' 範囲 A1 から B3 を指定
      ' 範囲のサイズを変更
    rng.Resize(5, 4) ' 行数を5、列数を4に変更

    上記の例では、元の範囲 A1:B3 のサイズを変更しています。Resize(5, 4) とすることで、行数を5、列数を4に変更しています。結果的に、範囲は A1:D5 になります。Resizeプロパティは、元の範囲からサイズを拡大するだけでなく、縮小することもできます。例えば、元の範囲が A1:D5 である場合に、Resize(2, 2) とすると、範囲は A1:B2 に縮小されます。また、Resizeプロパティを使って、単一のセルの範囲を拡大または縮小することもできます。例えば、セル A1 の範囲を2行3列に拡大する場合には、Range(“A1”).Resize(2, 3) とします。以上が、VBAのResizeプロパティの基本的な使い方です。Resizeプロパティは、配列や範囲のサイズを効果的に変更するための便利な機能です。