2017-08-29 18 views
0

Vにはdd/mm/yyyyという形式の日付が含まれています。ただし、システムフォーマットはmm/dd/yyyyと表示されます。私はdd/mm/yyyyからdd-mmm-yyyyに日付形式を変換したいと思います。日付の書式を変更するVBA

ThisWorkbook.Sheets(1).Range("W" & i).NumberFormat = "dd-mmm-yyyy"

私はそれが上記のコードを使用して変換すると、それは08/02/2017から02-Aug-2017に値を変更します。それは08-Feb-2017に変更する必要があります。手伝ってください。

+1

地域の設定を確認してください。 Excelはあなたが8月2日に入っていると思っています - 私はこのシステムのいくつかのシステムで急いでレポートを設定し、ユーザーがアメリカの日付を残しているときに同じ問題を抱えています....人々についての暴言を感じ始める右のボックスをチェックしないでください。 –

+0

私はそれを信じていません。セル内の日付に間違いがあります。それだけで何があるのでしょう...セルに日付をもう一度入力して再試行する必要があります... –

+0

私はそれを試して、それは私のために働く...それは、あなたがしたいことはしないでください。 –

答えて

0

最初からすべてを単純化してください。 8.Feb.2017はExcelシステムの42774日目です。このように、空のシートに次のように実行し、結果を確認してください:Excelで

Option Explicit 

Public Sub TestMe() 

    [a1] = 42774 '08-Feb-17 
    [a2] = [a1] 
    [a3] = [a1] 
    [a4] = [a1] 

    [a2].NumberFormat = "dd-mmm-yyyy" 
    [a3].NumberFormat = "mmm-dd-yyyy" 
    [a4].NumberFormat = "dd-mm-yyyy" 

End Sub 

を、1日目は、1-JAN-1900があります。 VBA第1日は1899年12月31日です。

+0

実際には、1日は1900年1月1日です。そして、0日は1900年1月1日と表示されます。そして、60日は存在しないとして1900年2月29日に表示されます。 – YowE3K

+0

@ YowE3K - 本当に、私はVBAについて考えていました。 – Vityata

+1

ああ - 私はそれがVBAで後方に働いたことに気がつかず、したがって、60日を1900年2月28日、したがって0日を1899年12月30日と扱いました。私は両者が同じことをしたと思いました。 (今日の私が学んだトリビアの一部):) – YowE3K

0

コードに問題はありません。 "08/02/2017"を入力しました。これは "mm/dd/yyyy"の形式で入力として解釈されます。その結果、セルには「02-Aug-2017」が表示されます。

入力(2011年8月8日)を "dd/mm/yyyy"の形式の日付値として読み取るには、システムの日付形式を変更する必要があります。その後、あなたのセルに希望のフォーマット&値(2007年2月8日)の日付が表示されます。

システムの日付形式を変更するには、コントロールパネル>地域&言語を選択します。あなたの現在のフォーマットは "英語(米国)"でなければなりません[mm/dd/yyyy日付形式のもの]。それを "English(United Kingdom)"に変更してください。

これは問題を処理する必要があります。

関連する問題