申し訳ありません申し訳ありませんが、私のコメントにはっきりと私の指摘はありませんでした。
形式に「$ -409」を含めると、アメリカの書式の日付が必要と判断したのはあなたです。 Excelはアメリカの書式の日付を作成するのに役立ちますが、必要な書式の日付を決めるのには役立ちません。
ジェシーがアメリカの日付を取得し、ジョンがイギリスの日付を取得し、ジャックがフランスの日付を取得すると判断する必要があるのはあなたです。その決定を下すと、VBは日付を書式設定する際に国コードを受け入れますが、VBAがそのような機能を提供するとは考えていません。 2つのロケールしかないので、自分で変換を行うことをお勧めします。
Option Explicit
Sub Demo()
Dim Prompt As String
Dim Recipient As String
Dim MonthsFrench() As Variant
Dim Today As Date
Today = Now()
MonthsFrench = VBA.Array("", "Janvier", "Févier", "Mars", "Avril", "Mai", "Juin", _
"Juillet", "Auguste", "Septembre", "Octobre", "Novembre", "Décembre")
' I have used VBA.Array so lower bound is zero regardless of option base setting
Debug.Print Format(Today, "d mmmm yyyy")
Debug.Print Format(Today, "mmmm d, yyyy")
Debug.Print Day(Today) & " " & MonthsFrench(Month(Today)) & " " & Year(Today)
Do While True
If Recipient = "" Then
Prompt = "Recipient name?"
Else
Prompt = "Last recipient, " & Recipient & " preferred date is "
Select Case Recipient
Case "Jesse"
Prompt = Prompt & Format(Today, "mmmm d, yyyy")
Case "John"
Prompt = Prompt & Format(Today, "d mmmm yyyy")
Case "Jacque"
Prompt = Prompt & Day(Today) & " " & MonthsFrench(Month(Today)) & " " & Year(Today)
Case Else
Prompt = "Last recipient not known"
End Select
Prompt = Prompt & vbLf & "Next recipient name?"
End If
Recipient = InputBox(Prompt)
If Recipient = "" Then
Exit Sub
End If
Loop
End Sub
アメリカの「mmmm yyyy」の日付を表示するには、$ -409という手段が必要です。つまり、システムロケールで定義された言語ではなく、1月、2月などの月を表示します。あなたはどのようなロケールを持っていますか? –
この回答に関連する情報があります(https://stackoverflow.com/a/899290/973283)。 –
@TonyDallimoreあなたは '$ -409'の意味について正しいですが、Excelのセル番号形式でのみ動作し、VBAでは動作しないように思われます。これが私の質問の目的です。 – YeO