2017-09-29 35 views
2

我想在Outlook VBA中實現IComparable.CompareTo以使我能夠排序自定義類的ArrayList。我收到以下錯誤:VBA無法實現IComparable.CompareTo

Compile Error: Procedure declaration does not match description of event or procedure having the same name.

這是我班的縮短版(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爲對象)如龍等無濟於事。

任何指針,我做錯了什麼。

回答

3

與任何接口實現或事件提供程序一樣,您應該使用代碼窗格頂部的下拉列表,以便VBIDE自動爲您創建方法存根,而不是手動輸入簽名。

VBIDE code pane dropdowns

這是正確的簽名:

Private Function IComparable_CompareTo(ByVal obj As Variant) As Long 

End Function 

與你的差異是由於在.NET的不同類型的系統; Long是一個32位整數(而VBA的Integer是16位),並且Variant能夠包裝COM不知道的任何東西(例如IUnknown)。在.NET中,VBA中的Object不是Object