「excel vba cellsとautofillの組み合わせ」
という検索キーワードで、このサイト・インストラクターのネタ帳へのアクセスがあることに気づきました。
Excel VBA(Visual Basic for Applications)で、RangeオブジェクトのAutoFillメソッドの、
引数・Destinationを指定する際に、Cellsプロパティを利用するには、どのようなオブジェクト式を書けばいいのかを探していた方による検索でしょうか。
この記事ではシンプルなマクロを2つご紹介しておきます。
AutoFillメソッドの引数指定にCellsプロパティを利用して横方向にオートフィルするサンプルマクロ
以下のマクロを実行すると、A1セルに「1月」と入力されたあとに、L12セルまで、
2月 3月 4月...
のように「12月」までの連続データがオートフィルされます。
Range("A1").Value = "1月"
Range("A1").AutoFill _
Destination:=Range(Cells(1, 1), Cells(1, 12))
End Sub
上記のマクロで使われている、
Range("A1").AutoFill _
Destination:=Range(Cells(1, 1), Cells(1, 12))
というオブジェクト式は、
Range("A1").AutoFill _
Destination:=Range("A1", "L1")
と同じ意味であることを、まず確認しましょう。
「excel vba cellsとautofillの組み合わせ」
と検索した方が探していたのは、
Destination:=Range(Cells(1, 1), Cells(1, 12))
の部分だろうと想像しています。
Rangeオブジェクトの、AutoFillメソッドの引数・Destinationには、オブジェクトブラウザーに「Destination As Range」と表示されているとおり、Rangeオブジェクトを指定する必要があり、
そのRangeオブジェクトはRange.AutoFillメソッドの仕様により、オートフィルする元のセルを含んだセル範囲を表している必要があります。
ですから、Range.AutoFillメソッドの引数・DestinationにCellsプロパティが単独で使われるということは、あり得ません。Rangeプロパティの引数にCellsプロパティを指定する形で使われます。
AutoFillメソッドの引数指定にCellsプロパティを利用して縦方向にオートフィルするサンプルマクロ
縦方向のオートフィルするマクロもご紹介しておきます。
以下のマクロを実行すると、A1セルに「January」と入力されたあとに、A12セルまで、
February
March
April
のように「December」までの連続データがオートフィルされます。
Range("A1").Value = "January"
Range("A1").AutoFill _
Destination:=Range(Cells(1, 1), Cells(12, 1))
End Sub
先にご紹介したマクロで、
Destination:=Range(Cells(1, 1), Cells(1, 12))
となっていた部分が、このマクロでは、
Destination:=Range(Cells(1, 1), Cells(12, 1))
になっています。
Rangeオブジェクトの第2引数に指定されたCellsプロパティが「Cells(12, 1)」と12行目・1列目のセル(すなわちA12セル)を表す指定になっているので、A1:A12の縦方向にオートフィルが行われます。
Rangeオブジェクトの引数にCellsプロパティを使ったオブジェクト式に慣れていない方は、
Sub samp()
Range(Cells(1, 1), Cells(12, 12)).Selsct
End Sub
というマクロで、Cellsプロパティの引数の数字を変更したときに、どのセルが選択されるかを確認しておきましょう。
Home » Excel VBA Rangeオブジェクト » Cellsプロパティ » AutoFillの引数DestinationをCellsで指定