2016-08-04 9 views
1

64ビットExcel 2016がインストールされたWindows 10 x64マシンを使用しています。64ビットExcel VBAで日付区切りが正しく機能しない

日付が正しく動作しないため、地域設定が正しく設定されていますが、VBAが日付区切り文字として.を正しく認識していないようで、-しか使用していません。これを32ビットのExcel 2010がインストールされたWindows 7 x64マシンと比較すると、それは正常に機能します。

下図では、あなたが間違った行動を見ることができますが:

VBA behavior

基本的に、私は呼び出しています:

? cdate("01.08.2016") 
15. 06. 4862 
? cdate("01-08-2016") 
1. 08. 2016 
? Application.International(xlDateSeparator) 
. 
? Application.International(xlTimeSeparator) 
: 

を、私はそれが必要として、これが機能しない理由はわかりませんWindowsの地域設定が正しく設定されている..任意のアイデア?解決策が見つかりました

+1

あなたのスクリーンショットからは、ドットの後ろにスペースがあるように見えます。 MM。 'd.MM.yyyy'ではなく' yyyy'ですが、 '' 01.08.2016 ''をスペースなしで変換しようとしています。代わりに01. 08. 2016 "'を変換してください。 –

+0

@VincentG確かに、それは問題でした。 – Peroxy

答えて

0

..私はに地域設定で短い日付を変更しなければならなかった:

d.MM.yyyy 

以前の設定は次のように(VincentGで述べたように)、短い日付マスクにスペースを持っていた:

d. MM. yyyy 

これは私の設定は今どのように見えるかです:

enter image description here

1

私はそれが.によって混乱だ推測して(それを除去することで)桁区切り記号としてそれを使用しようとしている:

Debug.Print Format$(CDate(1082016), "dd.mm.yyyy") 'prints 15.06.4862 

ExcelとVBAは、日付やローカライズには本当に悪いです。私はこのような回避策を提案したいと思います:

Dim test As String 
Dim parts() As String 
test = "01.08.2016" 
parts = Split(test, Application.International(xlDateSeparator)) 
Debug.Print DateSerial(CInt(parts(2)), CInt(parts(0)), CInt(parts(1))) 
関連する問題