应用代码两次时自动填充 "error 400"
Autofill "error 400" when applying code twice
当对某个 sheet 执行自动填充操作时,我的代码工作正常。除了当我还想对另一个填充执行相同的操作时,我得到一个 "error 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
解决方案
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
这可能是更好的解决方案。
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 statement eaasily assigns worksheet parentage to any Range object or Range.Cells property 只需在 .Range
或 .Cells
前加句号(又名 .
或 句号 ) .
当对某个 sheet 执行自动填充操作时,我的代码工作正常。除了当我还想对另一个填充执行相同的操作时,我得到一个 "error 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
解决方案
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
这可能是更好的解决方案。
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 statement eaasily assigns worksheet parentage to any Range object or Range.Cells property 只需在 .Range
或 .Cells
前加句号(又名 .
或 句号 ) .