Estoy tratando de acercarme lo más posible a los punteros de función/clases abstractas en VBA.¿Qué es un módulo de objeto público en VBA?
Tengo una clase llamada VerificationManager
y comprueba un montón de celdas en un par de hojas de cálculo coinciden. Esto se hará de diferentes maneras dependiendo de la información y las hojas de cálculo que se usen con ella.
Me gustaría poder hacer que el código sea reutilizable especificando un método para llamar en una cadena usando la función Application.Run
. Entonces puedo reescribir la función que cambia.
Ahora, si estuviera usando Java o C#, podría extender una clase abstracta y volver a escribir las partes internas de la función. Si estuviese usando JavaScript, podría almacenar una función en una variable y pasar la variable a la clase y llamarla desde allí.
Dentro de mi clase tengo una propiedad pública llamada "verificationModule" que configuro para el nombre de la función que quiero que llame.
Sub VerifyWorkLocations(empLoc As EmployerLocation)
...
For i = 0 To empLoc.numOfEmp
Application.Run verificationModule, empLoc.taxdescmatch, empLoc.employees(i)
Next i
...
End Sub
Sin embargo, cuando intento llamar Application.Run
recibo el siguiente error:
Compile Error:
"Only user-defined types defined in public object modules can be coerced to or from a variant or passed to late-bound functions"
Ya he intentado hacer mi Definido por el usuario Tipos en un Class Module
pero básicamente dice que un módulo de clase fue el mal lugar para un tipo.
Me parece que eso es lo que hice cuando creé todos los módulos para el proyecto. ¿Hay algo más aquí me estoy perdiendo? – leeand00
¿Dónde pusiste el UDT? Como prueba, simplemente puse un UDT de muestra en la parte superior de un módulo creado como se describió anteriormente, y parece haber funcionado bien ... –
¿O no entiendo bien el problema y quieres migrar tus UDT a uno completo? ¿Clases tituladas en VBA? –