2010-07-03 9 views
11

¿Cómo implemento mi clase ClsInterface, que tiene este código:La implementación de mi propia interfaz en VBA - Error: módulo de objeto necesita implementar 'x' para la interfaz 'y'

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

en mi clase Class2, que tiene este código:

Implements ClsInterface 

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

Mi código de prueba es

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

esto siempre viene con el siguiente error:

Microsoft Visual Basic
Compile error:

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

pero no hay ayuda con la ayuda de Microsoft (cuando presiono el botón Ayuda).

alguna idea?

+1

Aquí está [Cómo utilizar las herramientas en Excel VBA] (http://stackoverflow.com/questions/19373081/ how-to-use-the-implements-in-excel-vba/19379641 # 19379641) –

Respuesta

13

Su Class2 debe verse como;

Implements ClsInterface 

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

(partida de los cuadros desplegables en la parte superior de la ventana de código de clase 2, se puede ver lo objeto base se puede hacer referencia a; o Clase ClsInterface)

En su código de prueba que desea;

Dim obj As New ClsInterface 

Si desea llamar a través de la interfaz.

(También recomendaría nombrar intefaces en forma ISomeDescription y mediante SET en lugar de como Nuevo)

+0

gracias, seguí sus instrucciones, funcionó sin ningún error, pero el valor siempre es 0! mientras que debería ser 7, ¿alguna idea? –

+0

En su función privada ClsInterface_add ... necesita 'Devolver x + y' en lugar de 'agregar = x + y', de lo contrario, el valor de x + y nunca se devuelve. – Stewbob

+4

Debe volver a usar; ClsInterface_add = x + y –

Cuestiones relacionadas