以下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的明显无限循环,然后永远挂起。
好的,显然源必须是自动填充的目标范围的一部分。所以我的代码现在看起来像这样:
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
最后一行有相同的错误。
答案 0 :(得分:20)
来自MSDN:
目的地必须包括 来源范围。
B:U
不包含A6
,因此出现错误。我相信您可能希望将out
设置为A6:U6
。
仅指定列名意味着您要填充该列中不太可能是所需的behvaiour的每一行
<强>更新强>
除了以下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
一次被约束到单个方向(即水平或垂直)。要从单个单元格填充二维区域,首先必须沿该区域的一条边缘自动填充一条线,然后在该区域内拉伸该线条
对于复制格式和清除内容的特定情况(由于源单元格为空),这样做更好:
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
答案 1 :(得分:2)
要使AutoFill
正常工作,您需要使AutoFill
的范围超过来源范围。如果自动填充范围与源范围相同,那么在该范围内没有自动填充,因此您将收到错误
1004:Range类的自动填充方法失败。
因此,使自动填充范围超出源范围,错误将消失。
答案 2 :(得分:1)
如果您想自动填充,只需执行类似......
的操作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
这会自动填充到指定的范围。
这有帮助吗?
答案 3 :(得分:0)
不确定这是否对任何人有帮助,但我需要类似的东西。选择单元作为目标工作;
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 ###?的文件夹名称列表,这样运行正常。