【VBA】Resizeプロパティでセル範囲のサイズを変更します
VBA の Resizeプロパティ は 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] 数値を入力してセル範囲のサイズを変更します 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」が上に伸びたり、下に伸びたり、左に伸びたり、右に伸びたりします。
コメント
【AI解説】VBAのResize
[ChatGPT] VBAのResizeプロパティは、配列や範囲のサイズを変更するために使用されます。具体的には、指定した範囲の行数や列数を変更することができます。Resizeプロパティは、次のような構文を持ちます。
ここで、expressionは範囲オブジェクトを表し、RowSizeとColumnSizeは整数値で、それぞれ変更後の行数と列数を指定します。以下に例を示します。
上記の例では、元の範囲 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プロパティは、配列や範囲のサイズを効果的に変更するための便利な機能です。