米国のロケールであるMacMountain 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)。
この「yyyy-mm-dd」形式をより国際的にする方法、またはフランス語ロケールを使用するMacでもExcelに「ymd」形式を使用させる方法(マクロスタイル)はありますか?
(可能であれば、同じセルでこれを実行します。つまり、シートの変更をできるだけ少なくしたいので、日付を含む新しいセルを追加せずに、表示されたセルで参照します)
独自のユーザー定義関数を次のように記述しました
_Public Function DATE_FORMAT(dt as Date, fmt as String) as String
DATE_FORMAT = Format(dt, fmt)
End Function
_
VBAは常にUSロケールで機能するという事実を利用しているため、フォーマット文字列の一部としていつでもD
とM
とY
を使用できます。
その後、米国/英国以外のロケールでも、Excelの数式=DATE_FORMAT(A1, "YYYYMMDD")
を使用できます。
私も同じ問題を抱えてる ;これが私のリクエストに投稿された答えです ここ
====================================
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)として使用するだけです。
よろしく