2017-06-02 5 views
-1

ユーザーフォームのテキストボックスには、ワークシートのD列に日付を貼り付けるために、以下のvbaがあります。貼り付けられる日付の形式は、「YYYY/MM/DD」の順番に正確に必要です。テキストボックス内の日付形式を変更します

ただし、以下のコードでは、日付「DD/MM/YYYY」を貼り付けています。何か不足していますか?ありがとう

.Cells(lRow, 4).Value = Me.txtDate.Value 
    .Cells(lRow, 4).NumberFormat = "YYYY/MM/DD" 
+0

'.Cells(lRow、4)。 Value = Format(Me.txtDate.Value、 "yyyy/mm/dd") 'Format/Custom/YYYY/MM/DDでは、セルで直接フォーマットを設定することもできます。 –

+0

@KostasK。数値形式では、Excelが日付として認識しない日付形式の文字列はありません。 –

+0

@マットのマグ。そうです。それをすべて誤って読んでください。 –

答えて

1

テキストボックスには、Stringが含まれています。日付形式のセルにはDateが含まれています(Excelにはの日付と解釈されたい場合)。コンバージョンが不足しています。 ToDateStringを取り、Dateを返す関数になり

Dim dateValue As Date 
dateValue = ToDate(Me.txtDate.Value) 

.Cells(lRow, 4).Value = dateValue 
.Cells(lRow, 4).NumberFormat = "yyyy/MM/dd" 

。これについては多くの方法があり、提供された文字列が有効な日付ではない状況を処理する必要があります。

はここ方法です:それは十分に良いことだ、と一つだけの場所で必要な場合は

Private Function ToDate(ByVal value As String) As Date 
    ToDate = DateValue(value) 'raises error 13 "type mismatch" if invalid 
End Function 

、その後、あなたはそれをインライン化できます。

.Cells(lRow, 4).Value = DateValue(Me.txtDate.Value) 
.Cells(lRow, 4).NumberFormat = "yyyy/MM/dd" 
+0

ありがとうマット、それは動作します。 – thankseveryone

関連する問題