2011-12-15 4 views
5

ExcelでVBAマクロを作成して、スプレッドシートのデータを分析して電子メールを送信します。このマクロでは、 "MM/dd"形式の日付を添付する必要がありますが、出力は "MM-dd"形式です。だから問題は、なぜ私のスラッシュはダッシュに置き換えられているのですか?フォーマット(SomeDate、 "MM/dd")= "12-15" in VBA

は簡単にするために、私は実行

Private Sub Test() 
    Dim Yesterday As Date: Yesterday = DateAdd("d", -1, Now) 
    MsgBox Format(Yesterday, "MM/dd") 
End Sub 

は、メッセージボックスには、代わりに「12-15」を示しています...この例のコードを削減し、問題は同様に、この例で存在を確認しました"12/15"と予想されます。

+0

私はまったく同じコードを使用しましたが、私は "12/15"を期待どおりに取得します。それは珍しいことです... – aevanko

答えて

11

私は自分自身をVBAを使用していないが、私はそれが「現在のカルチャの日付の区切り」として/の治療だを疑う- あなたはおそらく日付の区切りとして-を使用して培養液中で実行しています。

MsgBox Format(Yesterday, "MM\/dd") 

原因と修正の両方での推測のビットだが、それは試してみる少なくとも価値がある:あなたは間違いなくは常にがスラッシュをしたい場合は、スラッシュをエスケープを引用 を試みることができます。

EDIT:このコンテキストで正しいエスケープを実行する方法の修正については、GSergに感謝します。

+1

あなたの推測は完全に正しいです、それはエスケープだけです、それはスラッシュで終わっています: '' MM \/dd "' – GSerg

+0

あなたは文化の設定について正しいかもしれません。私は私の地域の設定で 'yyyy-MM-dd'に設定された日付形式を持っています。あなたが示唆したように二重引用符を追加すると '12 ' - ' 14 'になりました。 –

+0

@GSerg、ありがとう、それは望ましい出力を作り出しました! –

2

これは、Windowsのカルチャ設定と関係があります。 [コントロールパネル] - [地域と言語のオプション] - [地域のオプションをカスタマイズする] - [日付の区切り文字]に移動します。それは " - "に設定されています。あなたが "/"を好むなら、あなたはそこでそれを変えることができます。

デフォルトの地域設定に関係なく日付をフォーマットしたい場合は、Jon Skeetが言ったこと(文字をエスケープする)を行うことができます。

関連する問題