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