Hi Mr K,
vielen Dank für deine Unterstützung. Du hast mir schon sehr weitergeholfen. Vor allem die eingebetteten Links haben mich zu den interessanten Ansätzen geführt.
Problem Vorgestellte Nullen:
Die Zelle in den ShapeSheet war defaultmäßig bereits als String definiert. Hier wurden ja auch die Nullen angezeigt.
Die Variable in meiner VBA Funktion, die ich mit dem *.Cells() Befehl gefüttert habe, hatte ich auch bereits als String Definiert. Daran lag es nicht.
Allerdings lernt man mit jedem Beispiel das man liest mehr nützliche Syntax und so konnte ich aus einem Beispiel, über das ich bei der Recherche für das Event kreieren gestolpert bin, ableiten das ich mit dem Zusatz „*.Cells().ResultStr“ den Text-String und nicht irgend einen Integerwert der die Nullen entfernt zurück erhalt.
Haken drann ![yes yes](https://www.vba-forum.de/ckeditor/plugins/smiley/images/thumbs_up.png)
Problem Script Ausführen:
Visio bietet in den Schape-Sheets ähnlich dem Eigenschaftsblatt bei Access Eventzellen, in denen man Funktionen ablegen kann. Im Gegensatz zu Access ist die Auswahl aber sehr übersichtlich. Es gibt sechs vordefinierte Events von denen eines nur ein Reserveplatzhalter ist.
Ein eigenes Application-Events im VBA-Script zu schreiben funktioniert zwar, allerdings ist dann der Application-Script-Code-Anteil umfangreicher als meine gesamte Funktion.
Das widerspricht an der Stelle meinem „keep it simple“ Ansatz.
Trotzdem habe ich es mal probiert und mit dem Beispiel Script (https://docs.microsoft.com/de-de/office/vba/api/visio.shape.cellchanged) gute Resultate erzielt.
Allerdings prüft dieses Event (cellchanged) jede Zellenänderung und nicht, wie meine MacGyver Trigger über die „=IF“ Funktion im den ShapeSheet, nur die eine explizite Zelle. Daher zwar eleganter aber auch noch nicht das wahre.
Ich werde es vorerst bei der Code-Ausführung durch meinen sinnlos-If-Befehl belassen. Beim Umgang mit Modulen, Klassenmodulen und dafür notwendigen eigenen Objektklassen fühle ich mich zu unsicher. Die simple Funktion über einen einzeiligen eintrag in einer Zelle zu Triggern ist der komplexitätsgrad auf dessen Niveau ich mich dan doch lieber bewege.
Eigentlich funktioniert somit alles wie gewünscht. Ich würde die Frage dennoch gerne ein paar Tage offenlassen, falls sich noch jemand meldet der mir bei den Events vielleicht noch weitere Tipps geben kann wie man das ausführen meiner Funktion beim Ändern einer einzelnen selbst definierten Zelle in den ShapeSheets möglichst wenig komplex aber auch ein wenig eleganter realisieren kann.
Viele Grüße
Niklas
|