自动填充运行时错误 1004 - 自动填充动态范围

Posted

技术标签:

【中文标题】自动填充运行时错误 1004 - 自动填充动态范围【英文标题】:Autofill Runtime error 1004 - autofill dynamic range 【发布时间】:2015-02-02 10:21:00 【问题描述】:

我正在尝试根据用户输入自动填充 (xlFillFormats) 动态范围。

代码是:

    If iInputRows > 1 Then
    Rows(14).Resize(iInputRows, Columns.Count).EntireRow.Insert _
      Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("D13").Resize(iInputRows, 1).DataSeries Rowcol:=xlColumns, _
      Type:=xlLinear, Step:=1
    Range("X13:AR13").Resize(iInputRows, 21).FillDown
    Rows(13 + iInputRows).Delete
    Range("O13:U13").Resize(iInputRows, 7).AutoFill Destination:=Range("O13:U" & iInputRows), Type:=xlFillFormats

End If

从技术上讲,所有已插入的行都应具有与其对应的源单元格相同的格式。但是,特定范围 O:U(行数由用户输入决定)决定排除单元格格式。 我很难在上面代码的第 8 行中纠正这一点,我得到了一个运行时错误。

有什么建议吗?

【问题讨论】:

【参考方案1】:

你的错误就在这里

Destination:=Range("O13:U" & iInputRows)

你忘了偏移目标范围的行,应该是这样的:

Destination:=Range("O13:U" & 13 + iInputRows)

编辑:

另外,如果您只想复制第一行的格式,.Resize(iInputRows, 7) 是不必要的,应该将其删除。

【讨论】:

谢谢马雷克。一个很好的建议。不幸的是,我没有得到我想要的响应(单元格边框仍然没有以正确的格式填充)。如果我在上面输入您的代码,则单元格边框不会被复制,并且我会得到比要求多的一行。所以我将代码修改为 'Destination:=Range("O13:U" & 13 + iInputRows - 1)' 我再次得到运行时错误。我想我可能只需要自动化边框设置而不是自动填充。 您要复制什么格式?只是第一行,O13:U13?如果是这样,您不需要在该行上 Resize 语句。 是的,就在第一行。那已经做到了。谢谢马雷克。

以上是关于自动填充运行时错误 1004 - 自动填充动态范围的主要内容,如果未能解决你的问题,请参考以下文章

错误 1004:范围类的自动填充方法失败 vba excel 2010

范围类上的自动填充错误

基于另一个工作表的自动填充动态范围

制作动态 VBA 自动填充范围

自动填充到vba中的命名范围

应用公式,然后自动填充数据,直到列中的最后一个可见单元格:VBA