Определение, попадает ли дата между определенным диапазоном Excel VBA - PullRequest
1 голос
/ 05 октября 2019

Итак, в основном я пытаюсь извлечь дату из электронной таблицы и проверить, выпадает ли она между 01/07/2019 и 31/07/2019, однако, похоже, она не работает, поскольку она также захватываетдатируется августом.

Итак, в основном моя программа извлекает данные из электронной таблицы, и я пытаюсь найти все значения, приходящиеся на период с 01 июля по 31 июля, и сохранить их в переменной chantalJulyTotalDemanded.

Dim julyStart As Date 
Dim julyFinish As Date 

julyStart = CDate("01/07/2019")
julyFinish = CDate("31/07/2019")

If CDate(dataSheet.Cells(x, 12)) >= CDate(julyStart) And CDate(dataSheet.Cells(x, 12)) <= CDate(JulyFinish) Then
    chantalJulyTotalDemanded = chantalJulyTotalDemanded + dataSheet.Cells(x, 10)

По сути, вышеприведенное должно работать, но оно также собирает информацию о датах августа.

Таким образом, дата, которую он получает из электронной таблицы, имеет следующий формат 1/07/2019.
Однако, это не должно иметь значения, так как оно все равно конвертируется в дату. Кто-нибудь знает, где я иду не так?

1 Ответ

0 голосов
/ 05 октября 2019

Меньше ответов и больше предложений:

Для констант даты в коде VBA используйте #

julyStart = #1/7/2019#

Я не уверен, как VBA определяет, является ли это Ян7 или 1 июля. Но я предлагаю вам разбить VBA и навести курсор мыши на переменную, чтобы увидеть, что он вам показывает.

В вашем цикле создайте переменную для значения ячейки:

Dim cellDate As Date:  cellDate = dataSheet.Cells(x, 12)

Теперь в режиме прерывания вы можете проверить, соответствуют ли переменные вашим ожиданиям.

Нет необходимости запускать CDate на CDate(julyStart), поскольку julyStart уже является датой.

Я предполагаю, что ваше значение даты в ячейке является фактическим значением числа даты. Если так, у вас не должно быть никаких проблем. Но если это строковое значение, вам нужно выяснить, выполняет ли CDate правильное преобразование, скажем, 1/7/2019 против 7/1/2019.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...