Resize(リサイズ)
Resizeは一度選んだセルの選択範囲を変更してくれるものになります。
第1引数でRowの選択範囲変更数を選択。第2引数でColumnの選択範囲変更数を指定するものになります。
Selection.Resize(行数,列数)
これはRow・Columnの選択範囲変更になります。
Selection.Resize(行数)
これはRowのみの選択範囲変更になります。
Selection.Resize(,列数)
これは列だけの選択範囲の変更になります。
この様に引数を省略して書くこともできます。
では実際にやってみましょう。
例えばA1のセルがアクティブになっているとします。これを10行・5列選択範囲を拡張してみましょう。
Selection.Resize(10, 5)
これだけですね。
行だけを拡張したい場合は
Selection.Resize(10)
列だけを拡張したい場合は
Selection.Resize(, 5)
これだけです。
この様に変更したい数を指定する事で選択範囲を変更する事が出来ます。
では前回の配列の値を一括吐出しする事に置き換えてみましょう。
Excelのセル範囲の指定は必ず1からスタートします。配列の部屋数は基本的に0からスタートします。という事で配列の部屋数に1足せばセル範囲の拡張に使えるのではないかという事です。
という事で部屋数が10個ある配列を作ってResizeしながら値を一括で吐き出してみましょう。
Sub resize_lesson2() Dim arr(9) As Integer Dim i As Integer For i = 0 To 9 arr(i) = i + 1 Next Selection.Resize(UBound(arr) + 1).Value = WorksheetFunction.Transpose(arr) End Sub
これで配列の部屋数が変わったとしてもいちいち書き換えなくても大丈夫ですね。
しかし、これではちょっと長く可読性が低くなってしまうので少しすっきり見える様に変数を一つだけ足して読みやすくしてみましょう。
Sub resize_lesson2() Dim arr(9) As Integer Dim i As Integer Dim rCnt As Integer 'Resizeさせる数 For i = 0 To 9 arr(i) = i + 1 Next rCnt = UBound(arr) + 1 Selection.Resize(rCnt).Value = WorksheetFunction.Transpose(arr) End Sub
たったのひと手間ですが、そのひと手間を惜しむかどうかによって最終的にメンテナンスのしやすさに大きく左右しますので流石にこれはこのままでもいいでしょ!と思うものも無理せず一旦変数に格納することをお勧めします。
それでは次回からは、以前やっていた月次更新のようなシートを作って月次更新のたびに月計表にも反映される。というようなシートを複数回に渡って作って行きたいと思います。