VBAでAutoFillメソッドを使ったときに「実行時エラー1004、AutoFillメソッドが失敗しました」がなってしまうケースがあります。
今回はAutoFillメソッドで失敗するときの対処方法について徹底的に説明していきます。
AutoFillが失敗するときの対処方法
AutoFillが失敗する原因・解決方法
AutoFillメソッドが失敗する原因としては、以下のことが考えられます。
- AutoFillの書き込み先になるセル(範囲)を指定していない
- 書き込み先になるセル(範囲)にAutoFillの基準となるセルを含めていない
以下の項目で詳しく説明していきます。
AutoFillの書き込み先になるセル(範囲)を指定していない
AutoFillメソッドを使う場合には、オートフィルの書き込み先のセルを指定しなくてはなりません。
AutoFillメソッドの構文は、以下のとおりです。
構文:Rangeオブジェクト. AutoFill(Destination, Type)
指定したRangeオブジェクトの値を基準に、引数「Destination」で書き込み先のセル範囲を指定します。
引数「Type」は、オートフィルのタイプ(加算、月単位など)にするかを指定し、省略すると標準のオートフィルを実行します。
つまり、書き込み先セル範囲を指定する「Destination」は省略することができません。
AutoFillメソッドの使用例は、以下のようになります。
Range("B2").AutoFill Destination:=Range("B2:B10")
'セル「B2」をセル範囲「B2~B10」でオートフィルする
AutoFillをするためには、引数「Destination」で書き込み先のセル範囲を指定することを忘れないでください。
Destinationで書き込み先のセル範囲を指定していても「失敗しました。」のエラーが発生する場合は、以下のようなことが原因として考えられます。
書き込み先になるセル(範囲)にAutoFillの基準となるセルを含めていない
AutoFillメソッドの引数「Destination」で書き込み先のセル範囲を指定していてもエラーが出る原因の多くは、セル範囲にAutoFillの基準となるセルを含めていないことです。
AutoFillメソッドの構文は、以下のとおりです。
構文:Rangeオブジェクト. AutoFill(Destination, Type)
引数「Destination」には、AutoFilの基準となるセルを含めて書き込み先のセル範囲を指定します。
AutoFillメソッドの使用例は、以下のとおりです。
Range("B2").AutoFill Destination:=Range("B2:B10")
'セル「B2」をセル範囲「B2~B10」でオートフィルする
上の例では、セル「B2」がオートフィルの基準で、オートフィルの書き込み先に「B2」を含む「B2~B10」を指定しています。
これがAutoFillメソッドの正しい使い方になります。
AutoFillメソッドを使ったサンプルコード
以下の表のように、A列に入っている名前の文字数をLEN関数を使ってカウントし、B列に入れるということをします。
そのために、セル「B2」に「=LEN (A2)」を入れ、オートフィルをセル「B2~B10」まで実行する、というサンプルコードは以下のようになります。
Sub 文字数のカウント()
Dim LastRow As Long
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
Range("B2").Value = "=LEN(A2)"
Range("B2").AutoFill Destination:=Range("B2:B" & LastRow)
End Sub
実行結果:
【まとめ】AutoFillが失敗するときの対処方法
AutoFillメソッドが失敗する原因は、
- AutoFillの書き込み先になるセル(範囲)を指定していない
- 書き込み先になるセル(範囲)にAutoFillの基準となるセルを含めていない
ということが挙げられました。
AutoFillメソッドで失敗のエラーになってしまうときには、書き込み先セル範囲を見直すようにしてみると解決につながるかもしれません。
エクセルを使う以上、オートフィルは必ず使うものですので、今回の記事をぜひ活用してくださいね。
コメント