2013-11-22 3 views
1

Почему я получаю это Type Mismatch Ошибка?Ошибка Тип несоответствия

Код:

Dim data as Date 

    data = CDate(Format(31, "00") & "/" & Format("1/9/2013", "mm/yyyy")) 

Когда я пытаюсь это со строками, конечно, это работает отлично.

Обс: Он работает, если я использую different day than 31, например 28, но ... Но почему эта ошибка возникает only with the day 31.

ответ

2

Я нашел ответ, и это глупо -.-»Month 9 = Agost = 30 days and not 31 ... Я чувствую себя так глупо сейчас,. Х

+1

Я думал месяц 9 = сентябрь! :( –

+0

kkkk '-' Я никогда не задумывался, что это может привести к ошибке, omg ... Первое, что я подумал, было о самом программировании uu Geee! – PlayHardGoPro

+1

30 дней - сентябрь, апрель, июнь и ноябрь. Осталось 31, за исключением Февраля Один, и у этого есть 28 дней, и 29 в каждый високосный год. – Paul

3

Похоже, что вы пытаетесь получить в последний день месяца Если это случай, попробуйте это ...

Dim data As Date 
Dim OriginalDate As Date 

OriginalDate = DateSerial(2013, 12, 20) 

data = DateSerial(Year(OriginalDate), Month(OriginalDate) + 1, 0) 

Этот код в основном получает первый день следующего месяца, а затем вычитает один день. Хорошая вещь об использовании функции Dateserial является то, что вы можете дать его «недействительные» значения, Например, если вы используете Year = 2013 и Month = 13, вы получите январь 2014 года.

+1

Вы можете использовать 'DateSerial (Year (OriginalDate), Month (OriginalDate) + 1, 0)' hack вместо '+ 1 - 1' roundtrip. Параметр 'Day' может быть любым положительным/отрицательным целым числом. – wqw

+0

Я действительно не считаю его взломанным, чтобы добавить 1, но я согласен с тем, что он будет немного эффективен в режиме, поэтому я изменю свой ответ. Спасибо за комментарий. –

2

Вы должны следить за датами, потому что в зависимости от того, какой регион ваш компьютер находится в (Control Panel/Язык и региональные стандарты), иногда ваша дата Format("1/9/2013", "mm/yyyy")) может быть истолковано как September 1, 2013 или January 9, 2013

Если вы можете использовать DateSerial в частности, зацепите номера месяца/дня, не полагаясь на выход формата.

Смежные вопросы