Проблема начинается с того, что вы отформатировали фильтр в виде строки и ваши данные в A2: A500000 - это число. Затем код добавляет строки в переменную, которую вы определили как LONG. Первые две функции, как вы надеетесь, просто по счастливой случайности. Проблема со днем заключается в том, что если значение строки запроса 200101, то вы ожидаете
myDay = "01"
, а после этого кода:
mydate2 = myYear & myMonth & myDay + 1
оно будет считаться «01» + 1 = 2, поскольку vba изменит вашу строку на значение автоматически. Таким образом, mydate2
= 20012 вместо намеченного 200102. Вы не можете +1 текстовое значение.
Попробуйте изменить все на целое и добавить 1000 для каждого дня (так как после этого у вас есть 3 дополнительные цифры), или вам придётся придумать какой-нибудь лог c, например, способ обработки месяца.
Я также заметил, что вы также должны определить переменную mydate2
в следующем:
Dim myYear As String, myMonth As String, myDay As String, myDate1 As Long, mydate2