Согласно API, с помощью remove_index
и add_index
является единственным способом достигнуть этого.
Из MSDN :
Пункт назначения должен включать исходный диапазон.
B: U
не содержит A6
, поэтому возникает ошибка. Я считаю, что вы, вероятно, хотите, чтобы для out
было установлено значение A6: U6
.
Указание только имени столбца означает, что вы хотите заполнить каждую строку в этом столбце, что вряд ли быть желаемым поведением
Обновление
В дополнение к приведенному ниже комментарию OP и обновлению исходного ответа это может помочь:
Dim src As Range, out As Range, wks As Worksheet
Set wks = Me
Set out = wks.Range("B1")
Set src = wks.Range("A6")
src.Copy out
Set out = wks.Range("B1:U1")
Set src = wks.Range("B1")
src.AutoFill Destination:=out, Type:=xlFillCopy
Set out = wks.Range("B:U")
Set src = wks.Range("B1:U1")
src.AutoFill Destination:=out, Type:=xlFillCopy
Автозаполнение
ограничено одним направлением (т. е. горизонтальным или вертикальным) в один раз. Чтобы заполнить двумерную область из одной ячейки, вы сначала должны автоматически заполнить линию вдоль одного края этой области, а затем растянуть эту линию по области
Для конкретного случая копирования форматирования и очистки содержимого ( в силу того, что исходная ячейка пуста), это лучше:
Dim src As Range, out As Range, wks As Worksheet
Set wks = Sheet1
Set out = wks.Range("B:U")
Set src = wks.Range("A6")
src.Copy out
Если вы хотите выполнить автозаполнение, просто выполните что-то вроде ...
Private Sub Autofill()
'Select the cell which has the value you want to autofill
Range("Q2").Select
'Do an autofill down to the amount of values returned by the update
Selection.AutoFill Destination:=Range("Q2:Q10")
End Sub
Это приведет к автозаполнению до указанного диапазона.
Это поможет?