VBA无法实现IComparable.CompareTo

时间:2017-09-29 18:44:38

标签: vba outlook-vba

我正在尝试在Outlook VBA中实现IComparable.CompareTo,以便我可以对自定义类的ArrayList进行排序。我收到以下错误:

  

编译错误:过程声明与描述不匹配   具有相同名称的事件或程序。

这是我班级的缩短版本(clsEmail):

Option Explicit
Implements IComparable

Dim Sender As String
Dim Recipient As String

Function IComparable_CompareTo(ByVal obj As Object) As Integer
    'To do add logic to compare Recipients
    CompareTo = 0
End Function

我已尝试过各种格式的函数声明,例如IComparable_CompareTo(obj as Object)As Long等无效。

关于我做错的任何指示。

1 个答案:

答案 0 :(得分:3)

与任何接口实现或事件提供程序一样,您应该使用代码窗格顶部的下拉列表,以便VBIDE自动为您创建方法存根,而不是手动输入签名。

VBIDE code pane dropdowns

这是正确的签名:

Private Function IComparable_CompareTo(ByVal obj As Variant) As Long

End Function

与您的不同之处在于.NET中的不同类型系统; Long是一个32位整数(vs VBA' s Integer是16位),Variant能够包装任何COM没有任何线索(例如{{1} }})。 VBA中的IUnknown在.NET中不是Object