应用代码两次时自动填充“错误400”
在某张纸上执行自动填充操作时,我的代码工作正常。 除了当我也想在另一个填充执行相同的操作,我得到一个“错误400”,我不明白为什么。
这工作正常:
Sheets(2).Range(Cells(9, 1), Cells(9, 4 + Sheets(3).UsedRange.Columns.Count)).AutoFill Destination:=Range(Cells(9, 1), Cells(7 + Sheets(3).UsedRange.Rows.Count, 4 + Sheets(3).UsedRange.Columns.Count)), Type:=xlFillDefault
但是这给了一个错误:
Sheets(7).Range(Cells(2, 1), Cells(2, 4 + Sheets(3).UsedRange.Columns.Count)).AutoFill Destination:=Range(Cells(2, 1), Cells(7 + Sheets(3).UsedRange.Rows.Count, 4 + Sheets(3).UsedRange.Columns.Count)), Type:=xlFillDefault Sheets(2).Range(Cells(9, 1), Cells(9, 4 + Sheets(3).UsedRange.Columns.Count)).AutoFill Destination:=Range(Cells(9, 1), Cells(7 + Sheets(3).UsedRange.Rows.Count, 4 + Sheets(3).UsedRange.Columns.Count)), Type:=xlFillDefault
解决scheme
Sheets(7).Range(Sheets(7).Cells(2, 1), Sheets(7).Cells(2, 4 + Sheets(3).UsedRange.Columns.Count)).AutoFill Destination:=Sheets(7).Range(Sheets(7).Cells(2, 1), Sheets(7).Cells(7 + Sheets(3).UsedRange.Rows.Count, 4 + Sheets(3).UsedRange.Columns.Count)), Type:=xlFillDefault Sheets(2).Range(Sheets(2).Cells(9, 1), Sheets(2).Cells(9, 4 + Sheets(3).UsedRange.Columns.Count)).AutoFill Destination:=Sheets(2).Range(Sheets(2).Cells(9, 1), Sheets(2).Cells(7 + Sheets(3).UsedRange.Rows.Count, 4 + Sheets(3).UsedRange.Columns.Count)), Type:=xlFillDefault
这可能是一个更好的解决scheme。
dim ws3 as worksheet set ws3 = Worksheets(3) with Worksheets(7) .Range(.Cells(2, 1), .Cells(2, 4 + ws3.UsedRange.Columns.Count)).AutoFill _ Destination:=.Range(.Cells(2, 1), .Cells(7 + ws3.UsedRange.Rows.Count, 4 + ws3.UsedRange.Columns.Count)), Type:=xlFillDefault end with with Worksheets(2) .Range(.Cells(9, 1), .Cells(9, 4 + ws3.UsedRange.Columns.Count)).AutoFill _ Destination:=.Range(.Cells(9, 1), .Cells(7 + ws3.UsedRange.Rows.Count, 4 + Sheets(3).UsedRange.Columns.Count)), Type:=xlFillDefault end with set ws3 = Nothing
With … End With语句通过简单地使用句点(aka或full stop )对.Range
或.Cells
进行.Range
可以.Cells
地将工作表的父项赋值给任何Range对象或Range.Cells属性 。