Я работаю над макросом Excel и хочу создать массив дат, а затем перебрать его, не зная, сколько дат будет добавлено. Я думал, что это будет просто, но я не могу заставить его работать.
Я попытался использовать коллекцию:
Dim DateArr As Collection
Dim d As Date
Set DateArr = New Collection
DateArr.Add (CDate("1/1/2019"))
DateArr.Add (CDate("2/2/2020"))
For Each d In DateArr
sh.Cells(y, 27).Value = d
Next d
Но я получаю ошибку, которая говорит: «Для каждой управляющей переменной должен быть вариант или объект» и выделяет d в моем цикле. Разве даты не являются объектами?
Я также попробовал вариант:
Dim DateArr As Variant
DateArr.Add CDate("2/2/2020")
DateArr(1) = CDate("1/1/2019")
Но я не могу найти правильный синтаксис для добавления даты. Строка .Add выдает ошибку «Требуется объект», а строка DateArr (1) = выдает ошибку «Несоответствие типов».
Единственное, что работает, - это стандартный массив:
Dim DateArr() As Date
Dim y As Integer
ReDim DateArr(1 To 2) As Date
DateArr(1) = CDate("1/1/2019")
DateArr(2) = CDate("2/2/2020")
For y = LBound(DateArr) To UBound(DateArr)
sh.Cells(y, 27).Value = DateArr(y)
Next y
Но я понятия не имею, сколько дат будет в массиве, поэтому не могу использовать что-либо статическое. Есть ли способ использовать тот же синтаксис без установки размеров?
Спасибо!