Я пытаюсь автоматически обновить диапазон дат в верхней части моего отчета в Excel на основе диапазона дат из данных, загружаемых из текстовой базы данных. В приведенном ниже макросе я получаю ошибку времени выполнения «13»: несоответствие типов в PEndDt = Right(PaidDateRange, 8) .

Я думаю, что переменная Date, PEndDt, не любит получать String. Но я назначил строки переменным Date в других макросах! Я не знаю, как это исправить. Помогите, пожалуйста.

Sub test()

Dim PEndDt As Date
Dim PaidDateRange As String

PaidDateRange = "PAID DATE  1/01/13 -  9/31/13"
PEndDt = Right(PaidDateRange, 8)
Range("A1") = "Report thru " & Format(PEndDt, "Long Date")

End Sub

2 ответа2

2

Проблема в строке.

31.09.13 не является действительной датой.

31.09.2013 также не является действительной датой.

1

Вам нужно будет разобрать строку в формате месяц, день, год

Dim itemDate as String
itemDate = Right(PaidDateRange, 8)

PEndDt = DateSerial(Right(itemDate, 2), Left(itemDate, 2), Mid(itemDate, 4, 2))

Если вы просто помещаете его обратно в строку, зачем конвертировать в дату?

Range("A1") = "Report thru " & Right(PaidDateRange, 8)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .