2017-06-05 6 views
0

"[$-409]mmmm yyyy"に相当するOutlook VBAがあれば、Excelで必要なロケールに日付を表​​示できるのでしょうか。
Format(Date, "[$-409]mmmm yyyy")は無視され、システムロケールにのみ表示されます(2つの異なる場所で2つの異なるロケールを使用する必要があるため、システムロケールの変更はオプションではありません)。Outlookで日付を書式設定するときにロケールを強制する方法はありますか?

EDIT:私の質問は実際にはthis oneというかなり重複しており、OutlookまたはPowerPointのいずれのアプリケーションでも不可能と思われます。

+0

アメリカの「mmmm yyyy」の日付を表示するには、$ -409という手段が必要です。つまり、システムロケールで定義された言語ではなく、1月、2月などの月を表示します。あなたはどのようなロケールを持っていますか? –

+0

この回答に関連する情報があります(https://stackoverflow.com/a/899290/973283)。 –

+0

@TonyDallimoreあなたは '$ -409'の意味について正しいですが、Excelのセル番号形式でのみ動作し、VBAでは動作しないように思われます。これが私の質問の目的です。 – YeO

答えて

0

申し訳ありません申し訳ありませんが、私のコメントにはっきりと私の指摘はありませんでした。

形式に「$ -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 
+0

あなたの要点は分かりましたが、現時点で使用している配列回避策を使用するのではなく、ロケール設定で英語またはフランス語(または他のもの)で月名を書くことができるかどうかは本当に分かりました。 Excelで許されるフランス語の場合は、 'Format(Date、" [$ -409] mmmm yyyy ")'と 'Format(Date、" [$ -40C] mmmm yyyy ")'を使うことができて、セルの書式では - VBAではありません。 – YeO

+0

@YeO VBでは、 '' MMMM ''、 VBAと同等のものがないことを知っていますあなたがアドインの作成を可能にするVBのバージョンにアクセスできるならば、適切なルーチンを作成することができます。必要な機能を持たない無料のCommunityバージョンを使用します。 –

関連する問題