Excel VBA“范围级自动填充方法失败”
以下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等等,但是它经常出现,但是我所看到的所有回复都与格式不正确的范围地址有关,AFAIK不是我的问题。
在某人的build议下,我尝试用以下代码replace自动填充行:
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
最后一行同样的错误。
来自MSDN :
目的地必须包含来源范围。
B:U
不包含A6
,因此出现错误。 我相信你可能想要被设置为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
限制为单一方向(即水平或垂直)。 要从单个单元格填充二维区域,首先必须自动填充该区域的一条边线,然后在该区域上拉伸该线
对于复制格式和清除内容的具体情况(由于源单元为空),这是更好的:
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
这将自动填充到指定的范围。
有帮助吗?
不知道这是否有助于任何人,但我需要类似的东西。 select单元作为目标作品;
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 ###?的文件夹名称的列表,这工作得很好。