2017-09-29 3 views
2

사용자 지정 클래스의 ArrayList를 정렬 할 수 있도록 Outlook VBA에서 IComparable.CompareTo를 구현하려고합니다.VBA IComparable.CompareTo를 구현할 수 없습니다.

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

이 내 클래스의 단축 버전 (clsEmail)이다 : 나는 다음과 같은 오류 얻고 나는 그런 IComparable_CompareTo 같은 함수 선언에 대한 다양한 형식을 시도

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 

을 (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). VBA에서 Object은 .NET에서 Object이 아닙니다.