次のVBAコード(Excel 2007)は、エラー1004「範囲クラスの自動入力メソッドが失敗しました」で失敗します。誰かがそれを修正する方法を教えてもらえますか?
Dim src As Range, out As Range, wks As Worksheet
Set wks = Me
Set out = wks.Range("B:U")
Set src = wks.Range("A6")
src.AutoFill Destination:=out
(注:私はこれについてグーグルなどを持っています。それはかなり頻繁に出てきます、しかし私が見たすべての応答は不正な形式の範囲アドレスに関係していました、それはAFAIKは私の問題ではありません。
誰かの提案で、オートフィルラインを次のように置き換えてみました。
src.Copy out
これは、Excelセッションを100%のCPUを消費する見かけの無限ループに投げ込み、その後永久にハングするという効果がありました。
OK、どうやらソースは自動入力の宛先範囲の一部である必要があります。したがって、私のコードは次のようになります。
Dim src As Range, out As Range, wks As Worksheet
Set wks = Me
Set out = wks.Range("B1")
Set src = wks.Range("A6")
src.Copy out
Set out = wks.Range("B:U")
Set src = wks.Range("B1")
src.AutoFill Destination:=out, Type:=xlFillCopy
最後の行で同じエラー。
から [〜#〜] msdn [〜#〜] :
宛先にはソース範囲が含まれている必要があります。
B:U
にはA6
が含まれていないため、エラーが発生します。おそらくout
をA6:U6
に設定したいと思うでしょう。
列名だけを指定すると、その列のすべての行に入力する必要がありますが、これは望ましい動作ではない可能性があります。
更新
以下のOPのコメントに加えて、元の回答に更新すると、これでうまくいく可能性があります。
Dim src As Range, out As Range, wks As Worksheet
Set wks = Me
Set out = wks.Range("B1")
Set src = wks.Range("A6")
src.Copy out
Set out = wks.Range("B1:U1")
Set src = wks.Range("B1")
src.AutoFill Destination:=out, Type:=xlFillCopy
Set out = wks.Range("B:U")
Set src = wks.Range("B1:U1")
src.AutoFill Destination:=out, Type:=xlFillCopy
AutoFill
は、一度に1つの方向(つまり、水平または垂直)に制限されます。単一のセルから2次元領域を塗りつぶすには、最初にその領域の1つのエッジに沿って線を自動入力してから、その線を領域全体に引き伸ばす必要があります。
書式をコピーしてコンテンツをクリアする(ソースセルが空であるため)という特定のケースでは、これが適しています。
Dim src As Range, out As Range, wks As Worksheet
Set wks = Sheet1
Set out = wks.Range("B:U")
Set src = wks.Range("A6")
src.Copy out
AutoFill
を機能させるには、AutoFill
の範囲をソース範囲より大きくする必要があります。オートフィル範囲がソース範囲と同じである場合、その範囲にはオートフィルするものがないため、エラーが発生します。
1004:RangeクラスのAutoFillメソッドが失敗しました。
したがって、オートフィル範囲をソース範囲よりも大きくすると、エラーがなくなります。
自動入力したい場合は、次のようにします...
Private Sub Autofill()
'Select the cell which has the value you want to autofill
Range("Q2").Select
'Do an autofill down to the amount of values returned by the update
Selection.AutoFill Destination:=Range("Q2:Q10")
End Sub
これにより、指定された範囲まで自動入力されます。
これは役に立ちますか?
これが誰かに役立つかどうかはわかりませんが、私は似たようなものが必要でした。宛先としてセルを選択すると機能します。
dim rowcount as integer
Sheets("IssueTemplate").Select ' Whatever your sheet is
rowcount = 0
rowcount = Application.CountA(Range("A:A"))'get end range
Cells(4, 3).Select 'select the start cell
'autofill to rowcount
Selection.AutoFill Destination:=Range("C4:C" & rowcount), Type:=xlFillDefault
私の例では、OA100からOA ###?までのフォルダー名のリストを自動生成する必要がありましたが、これは正常に機能しました。