Ich möchte dies tun: "Wenn es ein Modul ist X mit einer Funktion Y dann rufen Sie es, sonst nicht."Gibt es ein CallByName-Äquivalent für globale Funktionen?
Ich bin mir bewusst, dass ich CallByName(Object, MethodName, ...)
verwenden kann, um eine Methode oder eine Eigenschaft einer Objektinstanz aufzurufen.
Kann man ein globales Sub/Function aufrufen, das nicht an ein Objekt gebunden ist?
//Module1
Public Sub DoSomething
End Sub
//Module2
Public Sub TriggerDoSomething
On Error Resume Next
CallByName2 "Module1", "DoSomething", ...
End Sub
Ich weiß, es wäre besser, meinen Code Refactoring DoSomething
in eine Klasse wickeln, aber zur Zeit ist dies nicht möglich, da es den Code meiner Mitarbeiter in einer Art und Weise brechen würde, die nicht in einem festen könnte wenige Stunden.
Schöne Idee. Wird die Klasse nicht in ein DLL-Projekt verschoben? Was Sie tun könnten & es würde den Client-Code des Moduls nicht brechen. Ich konnte es in einer EXE nicht schaffen. (Musste zu ActiveX exe wechseln, um sogar Klasse auf GlobalMultiUse zu setzen.) – MarkJ
Korrigieren Sie, ob sich die Klasse in einer EXE befindet. Ich mache das selten mehr und bevorzuge mindestens ein EXE, das mit einer DLL verknüpft ist. Es ist nur flexibler auf diese Weise. –
Sie könnten Recht haben. Vielleicht sollten Sie die Antwort bearbeiten, um das zu erklären? Es ist möglich, DR hat nicht bereits den Code in einer DLL. BTW Wenn Sie keine Einwände haben, werde ich meine Antwort bearbeiten, um Ihre Idee zu integrieren. Hinterlasse einen Kommentar, wenn du möchtest, dass ich es herausnehme. Ich habe +1 auf deine Antwort. – MarkJ