2015-12-15 3 views
2

При выполнении операции автозаполнения на определенном листе мой код работает нормально. За исключением случаев, когда я также хочу выполнить одну и ту же операцию на другой загрузке, я получаю «ошибку 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 

Раствор

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 
+1

Попробуйте указать, к какому листу относится каждый диапазон или объект ячейки. Если ничего не используется, он будет использовать ActiveSheet. – Alex4336

+0

Спасибо, должен был увидеть это сам ... –

ответ

1

Это может быть лучшим решением.

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 назначает листа отцовство к любому Range object или Range.Cells property просто предварив .Range или .Cells с периодом (ака . или полной остановки).

Смежные вопросы