VBA Code runs in excel 2013 but not in 2010

excel, vba

Solution

Change `EntryDate As Date` to `EntryDate As Variant`

and also change the line,

EntryDate = CDate(InputBox("Insert Date", "Insert Date", vbOKCancel))` to

to

EntryDate = InputBox("Insert Date", "Insert Date", vbOKCancel)

and after that line

Add this line

If EntryDate = False Then Exit Sub

After this line, you may write

EntryDate  = Cdate(EntryDate)

And the reason is simple because `Cdate(False)` will give you `00:00:00` and `Cdate(True)` will give you `29/12/1899`

Followup from comments

Is this what you are trying?

Dim EntryDate As Variant

EntryDate = InputBox("Insert Date", "Insert Date", vbOKCancel)

If EntryDate = False Then Exit Sub

If EntryDate <> "" Then
    EntryDate = CDate(EntryDate)
    Cells(LastRow + 1, 2).Value = EntryDate
    Cells(LastRow + 1, 3).Value = "EUR to USD"
    Cells(LastRow + 1, 6).Value = EntryDate
    Cells(LastRow + 1, 7).Value = "JOD to USD"
    Cells(LastRow + 1, 10).Value = EntryDate
    Cells(LastRow + 1, 11).Value = "ILS to USD"
Else
    Cells(LastRow + 1, 2).ListObject.ListRows(LastRow - 3).Delete
    Cells(LastRow + 1, 6).ListObject.ListRows(LastRow - 3).Delete
    Cells(LastRow + 1, 10).ListObject.ListRows(LastRow - 3).Delete
    Exit Sub
End If

Problem

The following code I've written using excel 2013 works on excel 2013, but when trying it on my company's 2010 version of excel it produces an error when I click Cancel button on inputbox dialog box and stops at the line of code: ``` EntryDate = CDate(InputBox("Insert Date", "Insert Date", vbOKCancel)) ``` says: type Mismatch and the number is: Run-time error'13': Why? ``` Sub InsertNewEntry() ' ' InsertNewEntry Macro ' To Insert New Entry for exchange rates ' Dim LastRow As Integer, EntryDate As Date Dim EURtoUSD As Double, JODtoUSD As Double, ILStoUSD As Double ' determine the number of the last row entered LastRow = ThisWorkbook.Worksheets("Exchange Rates Template").Cells(Rows.Count, 2).End(xlUp).Row 'determine if last date is last day of the year If Cells(LastRow, 2) = #12/31/2014# Then MsgBox "You are not allowed to insert a date above " & "31/12/ " & Cells(4, 1).Value Exit Sub Else Cells(LastRow, 4).Select Selection.ListObject.ListRows.Add AlwaysInsert:=False Cells(LastRow, 8).Select Selection.ListObject.ListRows.Add AlwaysInsert:=False Cells(LastRow, 12).Select Selection.ListObject.ListRows.Add AlwaysInsert:=False Cells(LastRow + 1, 2).Select EntryDate = CDate(InputBox("Insert Date", "Insert Date", vbOKCancel)) If EntryDate <> "" Then Cells(LastRow + 1, 2) = EntryDate Cells(LastRow + 1, 3) = "EUR to USD" Cells(LastRow + 1, 6) = EntryDate Cells(LastRow + 1, 7) = "JOD to USD" Cells(LastRow + 1, 10) = EntryDate Cells(LastRow + 1, 11) = "ILS to USD" Else Cells(LastRow + 1, 2).Select Selection.ListObject.ListRows(LastRow - 3).Delete Cells(LastRow + 1, 6).Select Selection.ListObject.ListRows(LastRow - 3).Delete Cells(LastRow + 1, 10).Select Selection.ListObject.ListRows(LastRow - 3).Delete Exit Sub End If End If End Sub ```

Original source

Related problems