自动填充运行时错误 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 - 自动填充动态范围的主要内容,如果未能解决你的问题,请参考以下文章