您好,我有一个用户表单,其中包含 3 个组合框:TaskStartTime、TaskFinishTime 和 Task_Duration。
计划是更改用户表单中的开始或结束值,并根据下面的代码更改持续时间值,但第二个子:TaskStartTime_Change会引发该行的类型不匹配错误:
完成时间 = 任务完成时间.值。
奇怪的是,第一个子中的代码完全相同,如果我注释掉第二个子,则没有错误,并且第一个子工作正常。
'first sub
Private Sub TaskFinishTime_Change()
Dim FinishTime As Date
Dim StartTime As Date
Dim Duration As Date
FinishTime = TaskFinishTime.value
StartTime = TaskStartTime.value
Duration = FinishTime - StartTime
Task_Duration.value = Format(Duration, "h:mm")
End Sub
'second sub
Private Sub TaskStartTime_Change()
Dim FinishTime As Date
Dim StartTime As Date
Dim Duration As Date
FinishTime = TaskFinishTime.value
StartTime = TaskStartTime.value
Duration = FinishTime - StartTime
Task_Duration.value = Format(Duration, "h:mm")
End Sub
我知道它一定正盯着我的脸,但我一辈子都看不到它。我在预填写用户表单时确实使用了格式化,并且我已经看过了,但它是完全相同的代码,那么为什么它在不同的子程序中会有不同的行为呢?
我检查了组合框行源的 TaskStartTime 和 TaskFinishTime 是否完全相同
我尝试了第三个子程序来根据开始时间和持续时间计算完成时间,它也会引发不匹配错误。
我当前的解决方法是对问题子程序使用 On Error Resume Next,当我这样做时一切正常,但这真的是正确的做法吗?
任何人都可以建议可能需要检查的区域/错误吗?
正如 @CHill60 在我的 Userform_Activate 子中所建议的,首先加载 TaskStartTime 值,并且在完成时间值存在之前调用 TaskStartTime_Change,因此出现错误。 TaskFinishTime_Change 子程序工作正常,因为两个值都已设置。