2016-05-02 4 views
0

Может ли кто-нибудь уточнить мои сомнения? см. ниже код.Преобразование даты/месяца не соответствует ожидаемому

Sub test() 
    Debug.Print Format(Now(), "mm") ' 1. 
    Debug.Print Format(Now(), "mmm") ' 2. 
    Debug.Print Format(Now(), "m") ' 3. 
    Debug.Print Format(Now(), "dd#mm#yy") ' 4. 
    Debug.Print Format(Now(), "dd*mm*yyyy") '5. 
    Debug.Print Format(Now(), "dd*mm*yy") ' 6. 
End Sub 

Выше возвращает код следующим

  1. мая
  2. 02 # 05 # 16

Я хочу знать, почему список 5 и 6 возвращает 02516123 и 025123 соответственно.

почему он не возвращается как 02 * 05 * 2016 и 02 * 05 * 16

Может ли один объяснить, почему?

+0

Не знаю, что здесь происходит, но обходной путь будет что-то вроде этого: Заменить (Format (Now(), «dd- mm-yyyy ")," - "," * ") – gizlmo

+0

' * 'не определен как символ для строки формата даты. –

+0

@paul Ogilvie, спасибо. то он не должен допускать результатов, а должен вызывать ошибку. –

ответ

1

В случае , Excel рассматривает символ # как действительный разделитель полей.

В случае и , Excel обрабатывает символ * как символ конкатенации.

+0

превосходит лечит * в качестве символа конкатенации? не могли бы вы кратко объяснить? –

1

Если вы хотите litteral *, вы должны экранировать символ:

Debug.Print Format(Now(), "dd\*mm\*yyyy")