Ich versuche, so nah wie möglich an Funktionszeiger/abstrakte Klassen zu kommen, wie ich in VBA.Was ist ein öffentliches Objektmodul in VBA?
Ich habe eine Klasse namens VerificationManager
und überprüft eine Reihe von Zellen in ein paar Tabellenkalkulation übereinstimmen. Dies geschieht auf unterschiedliche Art und Weise, abhängig von den Informationen und Tabellen, die damit verwendet werden.
Ich möchte in der Lage sein, den Code wiederverwendbar zu machen, indem Sie eine Methode angeben, die mit der Funktion Application.Run
in einer Zeichenfolge aufgerufen wird. So kann ich die Funktion, die sich ändert, neu schreiben.
Nun, wenn ich Java oder C# verwenden würde, wäre ich in der Lage, eine abstrakte Klasse zu erweitern und die Interna in die Funktion umzuschreiben. Wenn ich JavaScript benutze, könnte ich eine Funktion in einer Variablen speichern und die Variable an die Klasse übergeben und von dort aus aufrufen.
Innerhalb meiner Klasse habe ich eine öffentliche Eigenschaft namens "verificationModule", die ich auf den Namen der Funktion, die ich es aufrufen möchte, festgelegt habe.
Sub VerifyWorkLocations(empLoc As EmployerLocation)
...
For i = 0 To empLoc.numOfEmp
Application.Run verificationModule, empLoc.taxdescmatch, empLoc.employees(i)
Next i
...
End Sub
aber wenn ich versuche, Application.Run
ich die folgende Fehlermeldung zu nennen:
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"
Ich habe bereits versucht, meine benutzerdefinierte Typen in einem Class Module
platzieren, aber es im Grunde gesagt, dass ein Klassenmodul war die falsche Platz für einen Typ.
Es scheint mir, dass ich das gemacht habe, als ich alle Module für das Projekt erstellt habe. Gibt es noch etwas, das ich vermisse? – leeand00
Wo haben Sie die UDT abgelegt? Als Test habe ich einfach eine Beispiel-UDT oben in einem Modul platziert, das wie oben beschrieben erstellt wurde, und es scheint gut zu funktionieren ... –
Oder verstehe ich das Problem nicht, und möchten Sie Ihre UDTs vollständig migrieren? Klassen in VBA? –