运行时错误13

时间:2017-08-17 12:57:55

标签: excel vba excel-vba runtime

没有在编程方面度过美好的一天。我不明白为什么VBA不能做以下总和。

你能帮忙吗。

我在userform中有两个带日期的字段。我想要的只是减去它们来计算中间的日子

我尝试了两种变体。

ws1.Cells(mRow, 28).Value = TxtRecDate.Value - TxtDOD.Value
ws1.Cells(mRow, 28).Value = CInt(TxtRecDate.Value) - CInt(TxtDOD.Value)

两者都给我运行时错误13不匹配。

你能帮忙吗?

谢谢,

2 个答案:

答案 0 :(得分:2)

您需要将文本框中的text转换为date

    ws1.Cells(mRow, 28).Value = DateValue(TxtRecDate.Value) - DateValue(TxtDOD.Value)

如果文字没有正确表示日期,请注意这会导致Runtime Error 13: Type Mismatch。您可以通过首先测试文本框值来处理此问题:

    If IsDate(TxtRecDate) And IsDate(TxtDOD) Then
        ws1.Cells(mRow, 28).Value = DateValue(TxtRecDate.Value) - DateValue(TxtDOD.Value)
    Else
        MsgBox "Invalid dates entered", vbExclamation + vbOKOnly
    End If

答案 1 :(得分:0)

您应该测试两个文本框是否包含有效日期。然后使用DateValue将String值转换为Date值。

If IsDate(TxtRecDate.Value) And IsDate(TxtDOD.Value) Then

    ws1.Cells(mRow, 28).Value = DateValue(TxtRecDate.Value) - DateValue(TxtDOD.Value)

End If