【问题标题】:Autofill Runtime error 1004 - autofill dynamic range自动填充运行时错误 1004 - 自动填充动态范围
【发布时间】: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 行中纠正这一点,我得到了一个运行时错误。

有什么建议吗?

【问题讨论】:

    标签: excel vba


    【解决方案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 语句。
    • 是的,就在第一行。那已经做到了。谢谢马雷克。
    猜你喜欢
    • 1970-01-01
    • 2023-02-02
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 2016-03-30
    相关资源
    最近更新 更多