用户定义的类型未定义错误

时间:2011-06-10 16:37:56

标签: excel excel-vba vba

您好我是VBA Excel编程的新手。我一直收到“用户定义的类型未定义”错误。我到处搜索,找不到我具体问题的答案。许多解决方案需要添加引用,这似乎不适用于我的情况。计算正确返回,但错误消息让我发疯!最后的宏调用也没有发生。

    Function MinutesOver(duration, start_time, end_time)

      If Not (duration = "") Then
        If ((duration * 60) > 600) Or (((duration * 60) + (start_time * 24 * 60)) >    (TimeValue("17:00:00") * 24 * 60)) Then
          MinutesOver = (duration * 60) - ((end_time - start_time) * 24 * 60)
        Else
          MinutesOver = ""
        End If
      Else
        MinutesOver = ""
      End If

      Call AddRowDeleteConstants

    End Function

我甚至尝试制作更简单的版本,但我仍然遇到同样的错误。

    Function MinutesOver(duration As Integer)
      MinutesOver = duration
     'Call AddRowDeleteConstants
    End Function

任何反馈都将不胜感激。感谢。

    Sub AddRowDeleteConstants() 
      'On Error GoTo NoConstants 
      With ActiveCell.EntireRow
        .Copy 
        .Insert Shift:=xlDown 
        .SpecialCells(xlCellTypeConstants).ClearContents 
      End With 
    Exit Sub 

     'NoConstants: 
     'MsgBox "There were no constants to delete"
    End Sub 

2 个答案:

答案 0 :(得分:1)

我没有错误地运行你的功能,但是......

用户定义的函数无法修改其他单元格。在对AddRowDeleteConstants的调用中,无论命令是否错误,命令CopyInsertPasteSpecial都不会执行任何操作,因为它们实际上是从用户定义的函数调用的。< / p>

答案 1 :(得分:-1)

我的代码没有出现任何错误,但您可能需要为函数指定类型吗?

Function MinutesOver(duration As Integer) as Integer
只是一个猜测...