8

次の VBA コード (Excel 2007) は、エラー 1004「範囲クラスの Autofill メソッドに失敗しました。」で失敗します。誰かがそれを修正する方法を教えてもらえますか?

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

(注:これについてはGoogleなどで検索しました。かなり頻繁に表示されますが、私が見たすべての応答は、形式が正しくない範囲アドレスに関係していました.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

最後の行に同じエラー。

4

4 に答える 4

22

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
于 2009-10-07T00:18:05.273 に答える
3

機能させるには、ソース範囲以上AutoFillの範囲を作成する必要があります。オートフィル範囲がソース範囲と同じ場合、その範囲にオートフィルするものがないため、エラーが発生しますAutoFill

1004: Range クラスの AutoFill メソッドが失敗しました。

したがって、オートフィル範囲をソース範囲よりも大きくすると、エラーがなくなります。

于 2013-09-20T11:05:30.243 に答える
0

自動入力したい場合は、次のようにするだけです...

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

これにより、指定された範囲まで自動入力されます。

これは役に立ちますか?

于 2009-10-07T10:57:00.153 に答える