VBA меняет переменную, определенную как Дата, на строку

Я определил переменные finicio и ffin как Date, чтобы сохранить даты, введенные в двух полях ввода. ffin остается датой, но finicio преобразуется в String. Эти две переменные получают одинаковое лечение.

Принудительное преобразование в Date с помощью CDate(finicio) работает, но я хотел бы знать, почему это происходит ...

Sub CalculadoraAños()

    Sheets("Calculadora").Activate

    Dim fn, fMax, fMin, finicio, ffin As Date

    'Fecha actual
    fn = Date
    Range("D4") = fn

    'Fecha maxima
    fMax = DateAdd("m", -1, fn)
    Range("D6") = fMax

    'Fecha minima
    fMin = DateAdd("yyyy", -5, fn)
    Range("D5") = fMin

    'Fecha inicio
    finicio = InputBox("Pega la fecha de inicio: ")
    Range("D7") = finicio


    'Fecha fin
    ffin = InputBox("Pega la fecha de fin: ")
    Range("D8") = ffin

End Sub
0
задан 20.09.2019, 09:47
1 ответ

mГ©todo InputBox возвращает String согласно она documentaciГіn . AsГ - итак, всегда ты будешь получать String в переменной который, как они показывают в другом ответе, его один Variant segГєn ты declaraciГіn.

, Если бы ты это сделал explГ, - назначил встречу, возможно habrГ - в algГєn тип excepciГіn, получив String.

0
ответ дан 22.09.2019, 10:05
  • 1
    хотя inputbox он возвратит string, если é l распредели стоимость в переменную даты convertirá в дате. Проблема такая простая, как что объявил все как Variants, и они берут прямо string. – Damian 21.09.2019, 00:02