2010-07-03 3 views
11

Comment puis-je mettre ma classe ClsInterface, qui a ce code:La mise en œuvre ma propre interface en VBA - Erreur: module objet doit mettre en œuvre 'x' pour l'interface 'y'

Public Function add(x As Integer, y As Integer) As Integer 
End Function 

dans ma classe Class2, qui a ce code:

Implements ClsInterface 

Public Function add(x As Integer, y As Integer) As Integer 
add = x + y 
End Function 

Mon code de test est

Public Sub test() 
Dim obj As New Class2 
MsgBox obj.add(5, 2) 
End Sub 

cela vient toujours avec l'erreur suivante:

Microsoft Visual Basic
Compile error:

Object module needs to implement 'add' for interface 'ClsInterface'
OK/Help

mais il n'y a pas d'aide sur l'aide de Microsoft (quand je presse sur le bouton d'aide).

Des idées?

+1

est ici [Comment utiliser les Implements dans Excel VBA] (http://stackoverflow.com/questions/19373081/ comment-utiliser-les-implements-en-excel-vba/19379641 # 19379641) –

Répondre

13

Votre Classe2 doit ressembler à;

Implements ClsInterface 

Private Function ClsInterface_add(x As Integer, y As Integer) As Integer 
add = x + y 
End Function 

(Passer la commande boîtes déroulantes en haut de la fenêtre de code de Classe2, vous pouvez voir ce que l'objet de base, vous pouvez vous référer à, classe ou ClsInterface)

Dans votre code de test que vous voulez;

Dim obj As New ClsInterface 

Si vous voulez appeler à travers l'interface.

(Je recommande également nommer Intefaces sous forme ISomeDescription et en utilisant Set plutôt que comme nouveau)

+0

merci, j'ai suivi vos instructions cela a fonctionné sans aucune erreur mais la valeur est toujours 0 !!! alors qu'il devrait être 7, une idée? –

+0

Dans votre fonction privée ClsInterface_add ... vous avez besoin de 'Return x + y' au lieu de 'add = x + y', sinon la valeur de x + y ne sera jamais retournée. – Stewbob

+4

Vous devez retourner en utilisant; ClsInterface_add = x + y –