应用代码两次时自动填充“错误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属性 。