Автозаполнение таблицы с динамическим диапазоном в Excel VBA - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь автоматически заполнить таблицу с переменным диапазоном на основе даты (например, диапазон дат 6/10/2018 - 13/13/2018 автоматически заполняется с последней строки с 6/10/2018 по 6 / 13/2018).

Вот мой код, где на этапе автозаполнения возникает ошибка несоответствия:

Set Table = Adspend.Worksheets("Summary").ListObjects("Spend")
Set TableCell = Table.Range.Cells(2, Table.ListColumns(1).Index)

LastRow = Table.Range.Columns(1).Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

If IsEmpty(Table.Range.Cells(2, Table.ListColumns(1).Index)) = True Then
Table.Range.Cells(2, Table.ListColumns(1).Index) = 
Adspend.Worksheets("Summary").Range("B1").Value
End If


If TableCell.Value < Adspend.Worksheets("Summary").Range("C1").Value Then
        DatePeriod = Adspend.Worksheets("Summary").Range("C1").Value - 
TableCell.Value

        NewDate = LastRow + DatePeriod



        Table.Range.Cells(2, Table.ListColumns(1).Index).AutoFill Destination:=Table.Range(Cells(LastRow, Table.ListColumns(1)), Cells(NewDate, Table.ListColumns(1)))




End If

1 Ответ

0 голосов
/ 28 июня 2018

Если первый столбец вашей таблицы расходов находится в столбце O, а под ним ничего нет, переключите автозаполнение на ряд данных, используя в качестве остановки значение последней даты в столбце O и целое число в C1.

Option Explicit

Sub Macro1()
    Dim datePeriod As Long

    With Worksheets("Summary")
        datePeriod = .Range("C1").Value

        With .Cells(.Rows.Count, .ListObjects("Spend").Range.Column).End(xlUp)
            .DataSeries Rowcol:=xlColumns, Type:=xlChronological, _
                        Date:=xlDay, Step:=1, Stop:=.Value + datePeriod
        End With
    End With
End Sub

Если вы хотите преобразовать это в синтаксис ListObject, это не должно быть сложно, но DataSeries с остановкой должен быть проще, чем автозаполнение в целевом диапазоне.

...