もっとパソコンを活用しよう – エクセルの豆知識

これは覚えておいて損はないと思うエクセル関数や自動マクロでは教えてくれないVBAの書き方

連続データを作成するAutoFillメソッドで実行時エラー1004

任意のセル範囲を選択して、フィルハンドルをドラッグすると連続データを作成するAutoFillというメソッドがあります。

メソッドの構文は以下です。

Rangeオブジェクト.AutoFill( Destination[,Type ])
([]内は省略可能)

あらかじめテンプレートシートの2行目B列~O列までに計算式をセットしておいて、
その行を50行目までコピーしたいと思い、以下のコードを書きました。

Sub btnMakeList()
Dim wsData As Worksheet
Set wsData = ThisWorkbook.Worksheets(“Template1”)

wsData.Range("B2:O2").AutoFill Destination:=Range("B2:O50")

End Sub

いろいろ調べたのですが、範囲もあってそうだし、構文も間違いなさそう。なぜ???
いろんなパターンで実行し、対象のシートがアクティブになっている場合だけ、エラーがでないことに気づきました。

もう一度、ソースを見直すと。Destinationに指定している範囲の記述があいまいだ!
ということで、以下のように変更しました。

Sub btnMakeList()
Dim wsData As Worksheet
Set wsData = ThisWorkbook.Worksheets(“Template1”)

wsData.Range("B2:O2").AutoFill Destination:=wsData.Range("B2:O50")

End Sub

すると、シートをアクティブにしていないときでも問題なく実行されるようになりました。

ちょっとしたことだけど、忘れがちなので書き残しておきます。