「横にautofill vba」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがあることに気づきました。
VBA(Visual Basic for Applications)を使って、横方向にオートフィルを行うには、どのようなコードを書けばいいのかを探している方による検索です。
横方向にオートフィルを行うサンプルマクロ
いつものように簡単なマクロをご紹介しましょう。
Range("A1").AutoFill Destination:=Range("A1", "L1")
End Sub
上記のマクロを実行すると、A1セルが、L1セルまで横方向にオートフィルされます。
例えばA1セルに「1月」と入力されていれば、「2月」「3月」...「12月」というデータが入力されます。
サンプルマクロの解説
Range.AutoFillメソッドでは引数Destination(目的地・行き先)で指定したセルに、オートフィルが行われます。
この引数Destinationに横方向のセルを表すオブジェクト式を書けば、横方向のオートフィルが行われます。
A1セルをL1セルに向かってオートフィルするのだから、
Range("A1").AutoFill Destination:=Range("L1")
でもいいのではないかと考える方もいらっしゃるかもしれませんが、これではダメです。
引数Destinationには、オートフィルする元のセル・基準となるセルを含んで指定する必要があります。
ですから、
Range("A1").AutoFill Destination:=Range("L1")
ではなく
Range("A1").AutoFill Destination:=Range("A1", "L1")
と指定しています。
Rangeプロパティに引数を2つ指定するオブジェクト式に少しずつ慣れましょう
上記のマクロでは、
Range("A1").AutoFill Destination:=Range("A1", "L1")
というコードにしていますが、
Range("A1").AutoFill Destination:=Range("A1:L1")
でも、もちろんL1セルまでオートフィルされます。
違いは、引数Destinationに指定したオブジェクト式です。「Range("A1", "L1")」というオブジェクト式を指定するか、「Range("A1:L1")」というオブジェクト式を指定するかの違いです。
マクロ初心者の方には「Range("A1:L1")」という、Rangeプロパティの第1引数に「A1:L1」という文字列を指定する記述のほうが、理解しやすいはずです。
ですがRangeプロパティの引数を2つ指定する記述のほうが、
特にCellsプロパティと組み合わせると応用範囲が広がりますので、マクロを自分で作りたいという方は、少しずつ「Range("A1", "L1")」といった書き方に慣れていくことをおすすめしておきます。
最終更新日時:2021-05-12 11:08
Home » Excel VBA Rangeオブジェクト » VBAで横方向にオートフィルする