質問

次の 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

(注記:Googleなどで調べてみました。このために。これはかなり頻繁に発生しますが、私が見たすべての応答は不正な範囲アドレスに関係しており、私の知る限り、これは私の問題ではありません。


誰かの提案で、自動入力行を次のように置き換えてみました。

src.Copy out

これにより、Excel セッションが CPU を 100% 消費する明らかな無限ループに陥り、永久にハングアップするという影響がありました。


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 単一の方向に制約されます (つまり、水平または垂直)を一度に実行します。単一のセルから 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クラスのオートフィル方法が失敗した。

だから、オートフィル範囲ソースの範囲を超えるとエラーが消えます作ります。

あなたはあなただけの何かを自動入力する場合のような...

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

これは、指定された範囲まで自動入力します。

THSが助けていますか?

これは誰にも役立ちますが、私は似た何かを必要に応じて、わかりません。先の著作物として細胞を選択する;

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にフォルダ名のリストを自動生成?これがうまく働きました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top