Автозаполнение ячеек в заданном диапазоне с помощью метода Range.AutoFill. Синтаксис, параметры, примеры автозаполнения из кода VBA Excel.
Метод Range.AutoFill
Определение
Определение метода Range.AutoFill:
Синтаксис
Синтаксис метода Range.AutoFill:
1 |
Expression.AutoFill (Destination, Type) |
Expression — выражение (переменная), возвращающее объект Range.
Параметры
Параметры метода Range.AutoFill:
Параметр | Описание |
---|---|
Destination | Диапазон ячеек, который необходимо заполнить. В него должен быть включен исходный диапазон (Expression). Обязательный параметр. |
Type | Константа из коллекции XlAutoFillType, задающая тип автозаполнения. Необязательный параметр. |
Константа из коллекции XlAutoFillType указывает, как должен быть заполнен целевой диапазон (Destination) в зависимости от содержимого диапазона исходных данных (Expression). По умолчанию используется константа xlFillDefault (0), когда приложение Excel само определяет значения и форматы, используемые для заполнения целевого диапазона.
Примеры с Range.AutoFill
Примеры автозаполнения целевых диапазонов из кода VBA Excel с помощью метода AutoFill объекта Range.
Пример 1
Автозаполнение указанного диапазона (Destination), состоящего из нескольких строк и столбцов, данными одной ячейки (Expression) в зависимости от ее расположения в целевом диапазоне:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Sub Primer1() 'Удаляем границы ячеек, если уже были запуски кода Range("A1:E20").Borders.LineStyle = xlNone 'Ячейка Expression в верхнем левом углу Destination Range("A1") = 111 Range("A1").AutoFill Range("A1:E5") Range("A1:E5").Borders(xlEdgeBottom).LineStyle = True 'Ячейка Expression в нижнем левом углу Destination Range("A10") = 222 Range("A10").AutoFill Range("A6:E10") Range("A6:E10").Borders(xlEdgeBottom).LineStyle = True 'Ячейка Expression в верхнем правом углу Destination Range("E11") = 333 Range("E11").AutoFill Range("A11:E15") Range("A11:E15").Borders(xlEdgeBottom).LineStyle = True 'Ячейка Expression в нижнем правом углу Destination Range("E20") = "444" Range("E20").AutoFill Range("A16:E20") End Sub |
Целевые диапазоны для наглядности разделены горизонтальными линиями. Ячейка (Expression) может находиться только по углам целевого диапазона (Destination), иначе будет сгенерирована ошибка.
Пример 2
Горизонтальное автозаполнение указанного диапазона (Destination) последовательностью чисел, месяцев и дней недели:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Sub Primer2() 'Удаляем границы ячеек, если уже были запуски кода Range("A1:L4").Borders.LineStyle = xlNone 'Автозаполнение строки единицами Range("A1") = 1 Range("A1").AutoFill Range("A1:L1") Range("A1:L1").Borders(xlEdgeBottom).LineStyle = True 'Автозаполнение строки последовательностью натуральных чисел Range("A2") = 1 Range("B2") = 2 Range("A2:B2").AutoFill Range("A2:L2") Range("A2:L2").Borders(xlEdgeBottom).LineStyle = True 'Одновременное заполнение одной строки последовательностью 'месяцев и второй строки - днями недели Range("A3") = "Январь" Range("A4") = "Понедельник" Range("A3:A4").AutoFill Range("A3:L4") End Sub |
Пример 3
Вертикальное автозаполнение указанного диапазона (Destination) последовательностью дат:
1 2 3 4 5 6 7 8 9 10 11 |
Sub Primer3() 'Автозаполнение столбца датами, начиная с текущей Range("A1") = Date Range("A1").NumberFormat = "DD.MM.YYYY" Range("A1").AutoFill Range("A1:A20") 'Автозаполнение столбца датами в обратном порядке Range("B20") = Date Range("B20").NumberFormat = "DD.MM.YYYY" Range("B20").AutoFill Range("B1:B20") End Sub |
Добрый день
Подскажите почему не работает в диапазоне если его сместить от начала листа, работает построчно хорошо в любом месте.
а диапазон не получается выдает ошику
'Sub Primerh2_13_2_1() 'No не работает в диапазоне _
только в строке- Автозаполнение указанного диапазона
' ThisWorkbook.Worksheets("33Primer").Activate: Range("A75").Select
' Range("A75:E90").Borders.LineStyle = xlNone 'Удаляем границы ячеек, _
' если были запуски кода
' Range("A75") = 111 'Ячейка Expression в верхнем левом углу Destination
' Range("A75").AutoFill Range("A75:E77") ', xlFillDefault
end sub
Обсуждение закрыто.