和風スパゲティのレシピ

日本語でコーディングするExcelVBA

セル範囲を先頭セルの値・式で埋める - FillDown

セル範囲の先頭セルをそのセル範囲全体へコピーする、
Ctrl+DやCtrl+Rと同じ処理をVBAで実行する方法を解説します。

FillDown/FillUp/FillRight/FillLeftメソッドを使用します。

基本構文

セル範囲.FillDown
セル範囲.FillUp
セル範囲.FillRight
セル範囲.FillLeft

サンプルコード

Range("A1:A10").FillDown ' A1セルをA1~A10セルへコピー
Range("A1:A10").FillUp ' A10セルをA10~A1セルへコピー
Range("A1:J1").FillRight ' A1セルをA1~J1セルへコピー
Range("A1:J1").FillLeft ' J1セルをJ1~A1セルへコピー

Range("A1:C10").FillDown
' A1セルをA1~A10セルへコピー
' B1セルをB1~B10セルへコピー
' C1セルをC1~C10セルへコピー
' を同時に実行

Range("A1:A10,B5:B20,C10:C30").FillDown
' A1セルをA1~A10セルへコピー
' B2セルをB5~B20セルへコピー
' C1セルをC10~C30セルへコピー
' を同時に実行

解説

引数が一つもない単純なメソッドです。

上記のコードを実行すると、先頭セルからセル範囲へのコピーが実行されます。


ショートカットキーはCtrl+D,Ctrl+Rしかありませんが、
VBAで実行する場合はUpとLeftも使用することができます。

当然この時は「先頭セル」ではなく「最後尾のセル」がコピーされます。


エラーが起きにくいメソッドで、複数行/列の同時実行ができるだけでなく、
複数エリアから実行することもできてしまいます。
※ 本家Ctrl+D,Ctrl+Rも同様に実行可能です。


このFill系列メソッドで実行されるのは完全なコピーです。

数式・書式などもすべてコピーされますし、
値をコピーした場合に連番になることはありません。


連続データ作成、値のみコピー、書式のみコピーなどを行いたい場合は、
RangeオブジェクトのAutoFillメソッドを使用して下さい。


この二つのメソッドの違いは簡単で、

  • Ctrl+D、Ctrl+Rが本記事のFillDown/Rightメソッド
  • フィルハンドル(セルの右下からドラッグする✚)がAutoFillメソッド

となっています。

AutoFillメソッドの詳しい解説はこちらをどうぞ。
www.limecode.jp