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

时间:2016-04-07 06:59:35

标签: excel vba date userform

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

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

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

1 个答案:

答案 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