Wie verwende ich programmgesteuert erstellte Arbeitsblattfunktionen in VBA?

9

Gibt es eine Funktion "Register" oder "Re-compile", die benötigt wird, bevor programmgesteuerte Funktionen verwendet werden?

Wenn ich einem Arbeitsblatt eine Funktion hinzufüge, kann ich sie erst verwenden, nachdem die Kontrolle an das Arbeitsblatt zurückgegeben wurde.

Beispiel: Wenn mein Code eine Funktion zu einem Arbeitsblatt hinzufügt und dann versucht, sie zu verwenden, erhalte ich den folgenden Fehler: Laufzeitfehler 438 - Objekt unterstützt diese Eigenschaft oder Methode nicht Wenn ich mir den Code für die Arbeitsblätter anschaue, sind die Funktionen vorhanden und wenn ich Code verwende, der nur die erzeugten Funktionen verwendet, gibt es keinen Fehler.

Wie kann ich die Funktionen direkt nach dem Erstellen nutzen, ohne vorher anzuhalten?

Hier ist ein Beispiel im Code - Ich bekomme den Fehler, wenn ich TestingWorkSheetFunctions, aber nicht ausführen, wenn ich TestWorkSheetFunction nach dem Erstellen der Funktionen ausführen.

Beispiel nimmt eine neue Arbeitsmappe mit mindestens zwei Blättern (Blatt1 und Blatt2) an

%Vor%     
LastDavid 11.12.2013, 08:54
quelle

2 Antworten

2

Ich denke, das Problem hier ist, dass Ihr vba zu den Arbeitsblättern hinzugefügt wird und nicht kompiliert wird, so dass, wenn der Rest Ihres Codes versucht, auf diese Funktionen zuzugreifen, sie geschrieben sind, aber noch nicht Teil des Programms sind. Dies wird angezeigt, wenn Sie den Code erneut ausführen und alles funktioniert.

Bitte versuchen Sie, den Code, den Sie in der folgenden Prozedur haben, zu ändern:

%Vor%

Auf diese Weise wird die vba den ersten Teil des Codes ausführen und den Prozess freigeben, und dann wird die Prozedur "TestWorkSheetFunction" sofort aufgerufen. Wichtig: Dies ist eine Problemumgehung für Ihr Problem, dies ist möglicherweise nicht die beste Lösung, aber es könnte für Ihren speziellen Fall funktionieren.

    
Abe 22.05.2015 01:40
quelle
0

Excel ist nicht in der Lage, "Unterroutinen" in Zellformeln aufzurufen. Sie müssen sie mithilfe einer Funktionsprozedur unter einem Modul erstellen, um sicherzustellen, dass sie für das gesamte Dokument global verfügbar ist.

%Vor%

Jetzt können Sie die Funktion innerhalb des Blattes oder andere Prozeduren verwenden.

Ihre Funktion kann andere Prozeduren vom Typ Sub und Function in ihrem Codeblock aufrufen.

    
CoveGeek 17.02.2016 17:57
quelle

Tags und Links