Excel VBA Userform IIf(IsDate) 不保存空白

Excel VBA Userform IIf(IsDate) doesn't save blank

大家早上好, 我有一个工作簿,其中包含许多用户窗体,允许输入多种类型的数据,包括文本、数字和许多日期字段。一切似乎都运行良好,除非用户想要删除日期,使用适当的用户表单,它不会覆盖工作表中的值。下面是我用来检查用户窗体中的值是否为日期,然后填充工作表的代码,但它什么也没做。任何帮助表示赞赏。

ws.Cells(lastRow, txtCollectionDate.Tag).Value = IIf(IsDate(txtCollectionDate), CDate(txtCollectionDate), "")  

更新:txtCollectionDate 是一个文本框,它的值原来是 09/01/2016,但用户想删除它,因为它输入错误。用户应该能够突出显示该值,按删除(键盘),然后保存。

似乎 IIf 即使标准部分不正确, then 部分也会被处理。这会导致错误 13 类型与 CDate("") 不匹配。

所以你应该这样做:

If IsDate(txtCollectionDate) Then
 ws.Cells(lastRow, txtCollectionDate.Tag).Value = CDate(txtCollectionDate)
Else
 ws.Cells(lastRow, txtCollectionDate.Tag).Value = ""
End If

编辑:

删除"Seems"。该行为记录在案: https://msdn.microsoft.com/en-us/library/office/gg264412.aspx