セル範囲の先頭セルをそのセル範囲全体へコピーする、
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