2011-08-08 8 views
12

Excel VBAで日付の操作に大きな問題があります。 私は、ユーザーが日付を入力するテキストボックスを持つフォームを持っています。問題は、彼が別の形式(例えば、8月1日には1.08.2011、同じ日には8/1/11)で入力できることです。今私がしたいのは、彼がTextBoxに入力した日からいくつかの日を引くことです。私はこれまでのところ成功していて、それをどうやって行うのか分かりません。 私はdatalivrareは、ユーザーが日付を入力するテキストボックスと4が、私はその日から差し引くする日数です...と私はフォーマットが常にddをしたいということである。このVBAの日付から減算しますか?

Format((Format(Me.datalivrare.Value, "dd.mm.yyy") - 4), "dd.mm.yyyy") 

のようなものを試してみました彼らがそのテキストボックスに何を入力しても.mm.yyyy。

+1

8/1/11が8月1日か1月8日かを区別するにはどうすればよいですか? –

答えて

6

VBAの日付から追加し、減算する最高dateadd()(代入数が負の数) もあなたのメールアドレスにありますXAMPLEコードフォーマット文字列に欠落しているyがあります日に

+1

他の方法では、可能であれば、マスクされたテキストボックスを使用してユーザー入力を既知の形式に制限するか、単にデータの検証を行うことをお勧めします。 – Einacio

+0

ありがとうございました! –

5

まずキャスト(それだけで、1、2または4のyを受け入れる)、その後、日を引き、その後、適切にフォーマット:

Format(DateAdd("d", -4, CDate(Me.datalivrare.Value)), "dd.mm.yyyy") 
+0

あなたの答えをありがとう! –

1

それが重要です

If isDate(Me.datalivrare.Value) Then 
    str_Date = Format(DateAdd("d", -4, CDate(Me.datalivrare.Value)), "dd.mm.yyyy") 
Else 
    MsgBox "Not a valid date value", vbCritical + vbOkOnly, "Invalid Entry" 
End If 

は私がbluefeetの答えは、これまでほとんど情報を持っていたと私はDateAdd関数とCDate関数の使用を借りたと思う:ユーザーはVBAは非常に最初にあなたがすべき日付としてinterpritできる値を入力するかどうかを確認します。

関連する問題