【ExcelVBA入門】関数を整えるオートフィルの方法!

一度は関数の途中切れでおかしな数字を出したことありますよね。
私は大事な費用計上でやらかして泣きました。

目次

オートフィルのやりかた

いろいろありますが、右下をダブルクリックが一般的ではないでしょうか

それをVBAで表現してみたいと思います。

お手軽コード

Range(“A1”).AutoFill Destination:=Range(“A1:A10”)

これでA1から↓に向かってA10までオートフィルができます。
簡単ですね。

Sub test1()
With Range(“A1”)
.Value = “1日”
.AutoFill Destination:=Range(“A1:A10”)
End With
End Sub

ちょっと物足りないですね。

現実的に使うなら

Range(“A1”).AutoFill Destination:=Range(“A1”).Resize(10)

この方法が良いと思います。

次のコードはA1からZ1までになにか関数が入っているとします。
それを別シートの行数分、一気にオートフィルさせます。

Sub test2()
Dim MaxRow As Long
MaxRow = Sheets(“Sheet1”).Cells(Rows.Count, 1).End(xlUp).Row
With Sheets(“Sheet2”).Range(“A1:Z1”)
.AutoFill Destination:=.Resize(MaxRow)
End With
End Sub

使い方としては、With Sheets(“Sheet2”).Range(“A1:Z1”) この部分が大事で
このRange(“A1:Z1”)の範囲がオートフィルする元と考えてください。

.AutoFill Destination:=.Resize(MaxRow)
この部分でどれくらいオートフィルするかが決まります。
.Resize(MaxRow) を .Resize(10) とすれば10行分オートフィルされます。

列のオートフィルもできる

Range(“A1”).AutoFill Destination:=Range(“A1”).Resize(,10)

Resize(,10)とするだけです。
Resizeは本当は Resize(10,10) のように行と列を入れる物なんですが、たいてい省いて Resize(10)みたいに書かれがちです。
それだけです。

おわり

更新忘れには気をつけましょう。

コメント

コメントする

目次