早上好, 我有一个工作簿,有许多UserForms允许输入多种类型的数据,包括文本,数字和许多日期字段。一切似乎都运行良好,除非用户想要删除日期,使用适当的用户表单,它不会覆盖工作表中的值。下面是我用来检查userform中的值是否为日期的代码,然后填充工作表,但它什么也没做。任何帮助赞赏。
ws.Cells(lastRow, txtCollectionDate.Tag).Value = IIf(IsDate(txtCollectionDate), CDate(txtCollectionDate), "")
更新:txtCollectionDate是一个文本框,它的值最初是09/01/2016,但是用户想删除它,因为输入错误。用户应该能够突出显示该值,按删除(键盘),然后保存。
答案 0 :(得分:1)
似乎使用IIf
即使标准部分不为真,也将处理该部分。这会导致错误13类型与CDate("")
不匹配。
所以你应该这样做:
If IsDate(txtCollectionDate) Then
ws.Cells(lastRow, txtCollectionDate.Tag).Value = CDate(txtCollectionDate)
Else
ws.Cells(lastRow, txtCollectionDate.Tag).Value = ""
End If
修改强>
删除“似乎”。记录了这种行为: https://msdn.microsoft.com/en-us/library/office/gg264412.aspx