Excel VBA入門 その89:AutoFillが失敗するときの対処方法

エクセルVBA VBA



VBAでAutoFillメソッドを使ったときに「実行時エラー1004、AutoFillメソッドが失敗しました」がなってしまうケースがあります。

今回はAutoFillメソッドで失敗するときの対処方法について徹底的に説明していきます。



AutoFillが失敗するときの対処方法

実行時エラー1004、AutoFillメソッドが失敗しました

AutoFillが失敗する原因・解決方法

AutoFillメソッドが失敗する原因としては、以下のことが考えられます。

  1. AutoFillの書き込み先になるセル(範囲)を指定していない
  2. 書き込み先になるセル(範囲)に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列に入れるということをします。

A列の名前の文字数を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

実行結果:

B列に文字数が入る

【まとめ】AutoFillが失敗するときの対処方法

AutoFillメソッドが失敗する原因は、

  • AutoFillの書き込み先になるセル(範囲)を指定していない
  • 書き込み先になるセル(範囲)にAutoFillの基準となるセルを含めていない

ということが挙げられました。

AutoFillメソッドで失敗のエラーになってしまうときには、書き込み先セル範囲を見直すようにしてみると解決につながるかもしれません。

エクセルを使う以上、オートフィルは必ず使うものですので、今回の記事をぜひ活用してくださいね。

コメント

タイトルとURLをコピーしました