CALLTHIS Function

Ruft eine Prozedur in einem Vba-Projekt (Microsoft Visual Basic for Applications) auf.

Syntax

CALLTHIS(" Prozedur ",[" projekt "],[ **arg1 **, **arg2 **,...])

Parameter

Name Erforderlich/Optional Datentyp Beschreibung
Prozedur
Erforderlich
String
Der Name der Prozedur, die aufgerufen werden soll.
Projekt
Optional
String
Das Projekt, das die Prozedur enthält.
arg
Optional
Number, String, Date oder Currency
Wird als Parameter an die Prozedur übergeben,

Hinweise

Im VBA-Projekt ist procedure wie folgt definiert:

procedure(vsoShape As Visio.Shape [arg1 As type, arg2 As type...])

wobei vsoShape ein Verweis auf das Shape-Objekt ist, das die ausgewertete CALLTHIS-Formel enthält, und arg1, arg2 ... sind die in dieser Formel angegebenen Argumente.

Beachten Sie, dass vsoShape dem Argument "this" ähnelt, das an eine C++-Memberprozedur übergeben wird. daher der Name "CALLTHIS". In der Tat kann eine Zelle, die eine Formel enthält, die CALLTHIS enthält, als gelesen werden: "Rufen Sie diese Prozedur auf, und übergeben Sie ihr einen Verweis auf meine Form."

Wenn project angegeben wurde, durchsucht Microsoft Visio alle offenen Dokumente nach dem Dokument, in dem sich project befindet, und ruft in diesem Projekt procedure auf. Wenn project nicht oder als leere Zeichenfolge ("") angegeben wurde, geht Visio davon aus, dass sich procedure im VBA-Projekt des Dokuments befindet, das die auszuwertende CALLTHIS-Formel enthält.

Zahlen in arg1*, arg2... werden in externen Einheiten übergeben. Wenn Sie z. B. den Wert der Zelle Height aus einer Form übergeben, die 3 cm hoch ist, wird 3 übergeben. Um verschiedene Einheiten mit einer Zahl zu übergeben, verwenden Sie die FORMATEX-Funktion oder explizite Coerce-Einheiten, indem Sie ein NULL-Zahlen-Einheiten-Paar hinzufügen, z. B. 0 ft + Height.

Das zweite Komma in der CALLTHIS-Funktion ist optional. Es entspricht der Anzahl zusätzlicher Parameter, die der Prozedur hinzugefügt werden. Wenn Sie keine zusätzlichen Parameter außer (vsoShape as Visio.Shape)verwenden, fügen Sie das zweite Komma nicht hinzu. Verwenden Sie CALLTHIS("",). Wenn Sie beispielsweise zwei zusätzliche Parameter hinzufügen, verwenden Sie CALLTHIS("",,,).

Die CALLTHIS-Funktion wird immer als 0 ausgewertet, und der Aufruf von procedure erfolgt in der Leerlaufzeit nach Abschluss des Neuberechnungsvorgangs. procedure kann einen Wert zurückgeben, der jedoch von Visio ignoriert wird. procedure kann einen Wert zurückgeben, den Visio erkennen kann, indem die Prozedur die Formel oder das Ergebnis für eine andere Zelle des Dokuments festlegt, nicht jedoch für die Zelle, von der procedure aufgerufen wurde, es sei denn, Sie möchten die CALLTHIS-Formel überschreiben.

Der Unterschied zwischen der CALLTHIS-Funktion und der RUNADDON-Funktion besteht darin, dass das Projekt eines Dokuments auf kein anderes Projekt verweisen muss, um Prozeduren in diesem Projekt aufrufen zu können.

Hinweis

VBA-Code, der aufgerufen wird, wenn die Visio-Instanz eine CALLTHIS-Funktion in einer Formel auswertet, darf das Dokument mit der Zelle, die die Funktion verwendet, nicht schließen, da dies zu einem Anwendungsfehler führt und Visio beendet wird.

Wenn Sie das Dokument mit der Zelle, die die CALLTHIS-Funktion nutzt, schließen müssen, nutzen Sie eines der folgenden Verfahren:

  • Schließen Sie das Dokument mit Code, der kein VBA-Code ist.

  • Schließen Sie das Dokument von einem anderen Projekt aus als von jenem, das gerade geschlossen wird.

  • Fügen Sie Fenster-Nachrichten zum Schließen der Fenster ein, anstatt das Dokument zu schließen.

Weitere Informationen zum Ausführen von Code in Visio finden Sie unter Informationen zu Sicherheitseinstellungen und zum Ausführen von Code in Visio in dieser ShapeSheet-Referenz.

Beispiel 1

CALLTHIS("p",,FORMATEX(Height,"#.00 u",,"cm"))

Ruft die in einem Modul abgelegte Prozedur namens p auf und übergibt den Wert der Zelle Height in Zentimetern, beispielsweise 7,62.

Beispiel 2

CALLTHIS("q",,0 cm+Height,Width)

Ruft die in einem Modul abgelegte Prozedur q auf und übergibt die Höhe der Zelle in Zentimetern und die Breite in internen Einheiten.

Beispiel 3

Verwenden Sie folgende Prozedur im Klassenmodul ThisDocument.

Verwenden Sie mit den oben beschriebenen Prozeduren eines der folgenden Syntaxbeispiele in der Zelle EventDblClick eines Shapes.

CALLTHIS("ThisDocument.A",)

CALLTHIS("ThisDocument.B","Click")

CALLTHIS("ThisDocument.C",,"Klicken Sie auf", "OK.")