2013-07-02 3 views
0

я это значение вставляется в ячейку «02-01-2013»VBA изменяет мое содержимое переменной

Range("C2").Offset(aPos, 0).NumberFormat = "dd/mm/yy;@" 
    Range("C2").Offset(aPos, 0).Value = forma(t1, 2, t2) 
    MsgBox forma(t1, 2, t2) 

который командовать MsgBox там отображается правильно, так что строка правильно прибывающий в код, вызвать msgbox отображает это нормально, однако, когда вторая строка здесь выполняет свою работу, она записывает ее как «01-02-2013», обратите внимание на инверсию дня/месяца, я пробовал все и не могу понять, почему это происходит, я даже добавила 1-ю строку, чтобы форматировать формат, прежде чем получать данные, и до сих пор не повезло. Все поля ввода формируются правильно в формате dd/mm/yy.

Мне нужно это, чтобы я мог сделать вид, и так оно и есть, оно убивает меня.

+1

Что такое тип данных и значение, возвращаемое из 'forma()'? –

+0

он отклоняется, как этот Dim 'forma (от 1 до 20, от 1 до 3, от 1 до 40) как строка. Я использовал msgbox для просмотра содержимого с нескольких шагов, и во всех них он отображается правильно, только на этом последнем шаге он изменяется, и даже этот последний шаг отображается корректно на msgbox, но сохраняется в диапазоне с помощью mm/dd/aa вместо dd/mm/aa – Cachirro

+0

... и значение, возвращаемое в вашем конкретном примере? –

ответ

1

При размещении строкового значения в ячейке с форматированием даты вы запрашиваете Excel для преобразования этого значения в фактическую дату. Как это делает, что может зависеть от локальных настроек и фактического значения ...

Sub Tester() 
    Debug.Print CDate("02-01-2013") '2/1/2013 
    Debug.Print CDate("20-01-2013") '1/20/2013 
    Debug.Print CDate("02-22-2013") '2/22/2013 
End Sub 

Если вы хотите больше контроля, и вы знаете, что ваши строки в определенном формате:

Dim tmp As String, arr, dt As Date 
tmp = "02-01-2013" 'forma(t1, 2, t2) 
arr = Split(tmp, "-") 
dt = DateSerial(arr(2), arr(1), arr(0)) 
Debug.Print dt 
+0

спасибо, ваша помощь решила мою проблему, мне просто нужно было добавить ловушку для nullstrings, но ваша концепция была на месте, спасибо! – Cachirro

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