我使用excel 2013编写的以下代码可在excel 2013上使用,但在我公司的2010版本的excel上尝试使用时,在单击输入框对话框上的“取消”按钮并在代码行处停止时,它将产生错误:
EntryDate = CDate(InputBox("Insert Date", "Insert Date", vbOKCancel))
说:键入不匹配,数字是:运行时错误'13':
为什么?
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
更改EntryDate As Date
为EntryDate As Variant
并改变线,
EntryDate = CDate(InputBox("Insert Date", "Insert Date", vbOKCancel))` to
至
EntryDate = InputBox("Insert Date", "Insert Date", vbOKCancel)
在那条线之后
添加此行
If EntryDate = False Then Exit Sub
在此行之后,您可以写
EntryDate = Cdate(EntryDate)
原因很简单,因为它Cdate(False)
会给你00:00:00
并且Cdate(True)
会给你29/12/1899
评论的跟进
这是您要尝试的吗?
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句