Compare Dates in VBA
Here's how you can fix your code. Of course it's not the best way to do date calculations, and you'll also have to validate that there is text in the 2 text boxes, and maybe even use CDate()
to parse the text to date values, but this will work for your current situation.
If DateDiff("d", txtOrderDate.Text, txtRecievedDate.Text) < 0 Then MsgBox "Incorrect Date, item can't be recieved before order"else MsgBox "correct date"End If
Apart from the excellent solution of Siddharth Rout at Formatting MM/DD/YYYY dates in textbox in VBA, I'll suggest the following procedure. UserForm is a natural object in Excel, but we shall make reference to an OCX object to use it in Access, so not directly available.
In Access with form object, one can do this:
Sub sof20270928CompareDates() If CDate(txtRecievedDate.Value) < CDate(txtOrderDate.Value) Then MsgBox "Incorrect Date, item can't be recieved before order" Else MsgBox "correct date" End IfEnd Sub
Instead of comparing text strings, we compare now dates. CDate() converts local date time strings into date type. An American will type the date in mm/dd/yyyy format, like 11/19/2013, in France one types dd/mm/yyyy, like 19/11/2013. CDate() will take care of this as Access considers the computer's locale.
Moreover, txtRecievedDate.Value is preferealbe to txtRecievedDate.Text, the latter requires focus, ie, the control must be active to get the .text property.
try comparing them in date formats instead of in .text format
for example
Sub datee()Dim Orderdate As DateDim Recievedate As DateOrderdate = Worksheets("Sheet1").Range("A1").ValueRecievedate = InputBox("Enter date recieved")If Recievedate < Orderdate ThenMsgBox "error"Exit SubElseWorksheets("sheet1").Range("a3").Value = RecievedateEnd IfEnd Sub