2

На Mac Mountain Lion в США я работаю над электронной таблицей с такими макросами, как

TEXT(TODAY(), "yyyy-mm-dd")&" is the date"

Проблема в том, что лист также используется на компьютерах с французским языком, где макрос ожидает

TEXT(TODAY(), "aaaa-mm-jj")&" is the date"

и отображает # #VALUE (так как a для annee/year и j для jour/day на французском языке, а не y и d).

Есть ли способ - стиль макроса - сделать этот формат "гггг-мм-дд" более интернациональным или заставить Excel использовать формат "ymd" даже на Mac с использованием французского языка?

(если возможно сделать это в той же ячейке, то есть без добавления новой ячейки с датой внутри, на которую ссылается отображаемая ячейка, так как я хочу изменить лист как можно меньше)

2 ответа2

1

Я только что написал свою собственную пользовательскую функцию как

Public Function DATE_FORMAT(dt as Date, fmt as String) as String
    DATE_FORMAT = Format(dt, fmt)
End Function

Он использует тот факт, что VBA всегда работает с американским языком, поэтому я всегда могу использовать D и M и Y как часть моей строки формата.

Затем вы можете использовать формулу Excel =DATE_FORMAT(A1, "YYYYMMDD") даже в регионах за пределами США / Великобритании.

1

У меня та же проблема ; вот ответ на мой запрос здесь

====================================
Private Sub Workbook_Open()
With Application
    Select Case .International(xlDateOrder)
        Case 0   'mdy
            ThisWorkbook.Names("DateFormat").Value = _
                .International(xlMonthCode) & _
                .International(xlDateSeparator) & _
                .International(xlDayCode) & _
                .International(xlDateSeparator) & _
                .International(xlYearCode) & _
                    .International(xlYearCode)

        Case 1  'dmy
            ThisWorkbook.Names("DateFormat").Value = _
                .International(xlDayCode) & _
                .International(xlDateSeparator) & _
                .International(xlMonthCode) & _
                .International(xlDateSeparator) & _
                .International(xlYearCode) & _
                    .International(xlYearCode)

        Case 2 'ymd
            ThisWorkbook.Names("DateFormat").Value = _
                .International(xlYearCode) & _
                    .International(xlYearCode) & _
                .International(xlMonthCode) & _
                .International(xlDateSeparator) & _
                .International(xlDayCode)
    End Select
End With
End Sub

Вам просто нужно определить имя "DateFormat" в книге, а затем использовать его в формулах как = TEXT(A1, DateFormat)

С уважением

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