Сначала убедитесь, что вы используете Вариант базы 1, потому что начните свои циклы с 1 ??
Если у вас есть настройка, в которой вы знаете максимально возможные значения site_dates из ваших data_dates, вы можете переопределить site_dates наначало (перед циклом) должно иметь те же границы, что и дата-дата.
Отслеживать количество подходящих элементов, записанных в счетчике в цикле «Логика If».Затем, в конце, вы можете Redim Preserve до сгенерированной суммы:
ReDim Preserve site_dates(1 to qualifyingCounter)
В качестве альтернативы, не беспокоясь о производительности, вы можете посчитать самым простым для меня:
Ссылка на mscorlib и использование ArrayList
Dim data_dates
data_dates = Array("6/24/2019", "7/1/2019", "7/8/2019", "7/15/2019", "7/22/2019", "7/29/2019", "8/5/2019", "8/12/2019", "8/19/2019", "8/26/2019", "9/2/2019")
Dim siteDate_ArrayList As New ArrayList
Dim date_iter As Long
For date_iter = 0 To UBound(data_dates)
If date_iter Mod 2 = 0 Then 'I changed this logic just for my test
siteDate_ArrayList.Add data_dates(date_iter)
End If
Next date_iter
Dim site_dates As Variant
'Please note that array resultant from ToArray on an empty ArrayList will have a Ubound of -1
site_dates = siteDate_ArrayList.ToArray
РЕДАКТИРОВАТЬ: Для ссылки, перейдите в Инструменты -> Ссылки и посмотрите вниз по алфавиту mscorlib.dll.Тогда проверьте это.