您好我是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
答案 0 :(得分:1)
我没有错误地运行你的功能,但是......
用户定义的函数无法修改其他单元格。在对AddRowDeleteConstants
的调用中,无论命令是否错误,命令Copy
,Insert
和PasteSpecial
都不会执行任何操作,因为它们实际上是从用户定义的函数调用的。< / p>
答案 1 :(得分:-1)
我的代码没有出现任何错误,但您可能需要为函数指定类型吗?
Function MinutesOver(duration As Integer) as Integer
只是一个猜测...