【发布时间】:2011-06-10 16:37:55
【问题描述】:
您好,我是 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
【问题讨论】:
-
什么是 AddRowDeleteConstants ?错误在哪一行? (如果你看不出来,在 Function MinutesOver(.. 行设置断点,运行调用,中断时按 F8 运行下一行)上按 f9
-
我用 F8 逐步完成它,直到它完成(在它到达 End Function 行之后)才发生错误。 AddRowDeleteConstants 看起来像这样: