Excel VBA「範囲クラスの自動入力メソッドが失敗しました」
-
20-09-2019 - |
質問
次の 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にフォルダ名のリストを自動生成?これがうまく働きました。