Я предполагаю, что вы записали вышеуказанный код с помощью устройства записи макросов.Макро-рекордер отлично подходит для обнаружения синтаксиса непонятных команд, но может быть трудно привести в порядок его вывод.
Рассмотрим ваши последние несколько утверждений.
Sheets("Express").Select
Range("C20:G20").Select
Selection.AutoFill Destination:=Range("C20:G21"), Type:=xlFillDefault
Range("C20:G21").Select
Range("K20:L20").Select
Selection.AutoFill Destination:=Range("K20:L21"), Type:=xlFillDefault
Range("K20:L21").Select
Sheets("DL1").Select
Range("C20:G20").Select
Selection.AutoFill Destination:=Range("C20:G21"), Type:=xlFillDefault
Я могу заменить эти утверждения на:
With Sheets("Express")
.Range("C20:G20").AutoFill Destination:=.Range("C20:G21"), Type:=xlFillDefault
.Range("K20:L20").AutoFill Destination:=.Range("K20:L21"), Type:=xlFillDefault
End With
With Sheets("DL1")
.Range("C20:G20").AutoFill Destination:=.Range("C20:G21"), Type:=xlFillDefault
End With
, который, я думаю, вы согласитесь, выглядит аккуратнее, но нуждается в небольшом объяснении.
Рассмотрим:
With Sheets("Express")
.Range("C20:G20").AutoFill Destination:=.Range("C20:G21"), Type:=xlFillDefault
.Range("K20:L20").AutoFill Destination:=.Range("K20:L21"), Type:=xlFillDefault
End With
With
говорит, что я хочу Sheets ("Экспресс ") добавляется в начало всего, что начинается с точки до End With
.
Так что эти четыре строки точно такие же, как:
Sheets("Express").Range("C20:G20").AutoFill Destination:=Sheets("Express").Range("C20:G21"), Type:=xlFillDefault
Sheets("Express").Range("K20:L20").AutoFill Destination:=Sheets("Express").Range("K20:L21"), Type:=xlFillDefault
Рассмотрим:
Sheets("Express").Select
Range("C20:G20").Select
Selection.AutoFill Destination:=Range("C20:G21"), Type:=xlFillDefault
Range("C20:G21").Select
Записывающее устройство для макросов записывало каждый шаг по мере его выполнения.Вы переключились на лист «Экспресс», вы выбрали диапазон C20: G20, а затем скопировали этот диапазон вниз по строке.
Лучше не выбирать ничего, если вы можете избежать этого, потому что это замедляет ваш макрос и обычно делаеткод сложнее понять.
Синтаксис метода автозаполнения:
SourceRange .AutoFill Destination: = DestinationRange , Тип: = Тип
Таким образом, можно включить все параметры в одну строку, как у меня.
Учтите:
Type:=xlFillDefault
Макро-рекордер имеетустановите тип на xlFillDefault
, что говорит компилятору угадать требуемый тип заполнения, просматривая исходные данные.Посмотрите автозаполнение в справке VB, и вы получите список всех типов заполнения.Выберите тот, который вы хотите.
Резюме
Это уровень детализации, который вы искали?При необходимости вернитесь с дополнительными вопросами.