代码在一个子项中给出类型不匹配,但在另一个子项中没有给出类型不匹配

问题描述 投票:0回答:1

您好,我有一个用户表单,其中包含 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,当我这样做时一切正常,但这真的是正确的做法吗?

任何人都可以建议可能需要检查的区域/错误吗?

excel vba combobox userform type-mismatch
1个回答
0
投票

正如 @CHill60 在我的 Userform_Activate 子中所建议的,首先加载 TaskStartTime 值,并且在完成时间值存在之前调用 TaskStartTime_Change,因此出现错误。 TaskFinishTime_Change 子程序工作正常,因为两个值都已设置。

© www.soinside.com 2019 - 2024. All rights reserved.