2017-06-22 15 views
0

入力ボックス経由セルで使用される日付を定義したいとします。手動入力後の日付値ミスマッチ

Sub Refresh() 

Dim myValue As Variant 

myValue = InputBox("Give me a starting date") 
Workbooks.Open Filename:="Y:\ 3300.xls" 
Range("A1").Value = myValue 
ActiveWorkbook.Close SaveChanges:=True 

End Sub 

奇妙なことが時々与えられた日付が正確であること、である、(指定したファイルを再度開くことで確認)逆に、いくつかの回。

30/01/17が
14/05/17が
04/02/17が02/04/17
08/09/17に逆転されて逆転された正しい正しいです:私は、次の日付を試してみました09/08/17
10/05/17に05/10/17
05/10/17に反転さ/セルフォーマットは、上記(DDに記載されている10/05/17

に反転されますmm/yy)、私がそれを変更してそれに応じて入力を適応させても、その動作は変わらない。

+0

おそらく、mm/dd/yyおよび2017年2月4日のシステムフォーマットは、02/04/2017に変更されます。私たちは12ヶ月しかないので、30/1/17はそのままの状態です。実際の日付ではありません。 '= value()'で日付を含むセルを囲むことで確認できます。最初の2つは '#VALUE'エラーを返し、残りはそれぞれの基本数字に変換されます。 –

答えて

1

Exc elはあなたのエントリーを日付として認識しません。入力ボックスに入力されたテキストだけで、シートに追加するとフォーマットされます。 CDATEを追加すると、入力された値が実際の日付に変換されます。間違っていると誰かが私をここで修正すると確信していますが、ローカル設定を使用して変換しているようです。

私が見るもう1つの潜在的な問題は、ちょうど開かれたものではないかもしれないActiveWorkbookを見ていることです。以下のコードは、変数にブックを追加するので、正しいブックとそのブックの正しいシートを常に確認していることがわかります。

Sub Refresh() 

    Dim myValue As Date 
    Dim wrkBk As Workbook 

    myValue = InputBox("Give me a starting date") 
    Set wrkBk = Workbooks.Open("Y:\ 3300.xls") 
    wrkBk.Worksheets("Sheet1").Range("A1") = CDate(myValue) 
    wrkBk.Close SaveChanges:=True 

End Sub 
関連する問題