Home » ExcelVBA Rangeオブジェクト » VBAで横方向にオートフィルする

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

VBAで横方向にオートフィルする

「横にautofill vba」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがあることに気づきました。

VBA(Visual Basic for Applications)を使って、横方向にオートフィルを行うには、どのようなコードを書けばいいのかを探している方による検索です。

[スポンサードリンク]

横方向にオートフィルを行うサンプルマクロ

いつものように簡単なマクロをご紹介しましょう。


Sub 横方向にオートフィル()
 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つ指定する記述のほうが、

VBAで横方向にオートフィルする

特にCellsプロパティと組み合わせると応用範囲が広がりますので、マクロを自分で作りたいという方は、少しずつ「Range("A1", "L1")」といった書き方に慣れていくことをおすすめしておきます。

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » VBAで横方向にオートフィルする

TrackBack:1

TrackBack URL
AutoFillの引数にCellsを利用する from インストラクターのネタ帳
Range.AutoFillメソッドの引数・Destinationに、Cellsプロパティを組み合わせたExcelマクロをご紹介しています。

Home » ExcelVBA Rangeオブジェクト » VBAで横方向にオートフィルする

「ExcelVBA Rangeオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.