Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1876to1880
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Problem mit FunctionDialog

Problem mit FunctionDialog
15.04.2022 19:22:49
Andreas
Guten Tag,
ich habe folgendes Problem:
Ich habe mehrere Funktionen erstellt und ein Ribbon. Wenn ich im Ribbon auf einen Button klicke, wird der FunctionDialog mit einer entsprechenden Funktion vorbelegt gestartet. Dabei gehe ich wie folgt vor:

ActiveCell.Formula = "=MeineFunktion1()"
Application.Dialogs.Item(xlDialogFunctionWizard).Show
Nun habe ich mehrere Funktionen auf diese Weise vorbereitet. Bei einigen funktioniert das einwandfrei, bei anderen nicht. Nach langer Suche, habe ich jetzt rausgefunden, dass es Probleme gibt, wenn einer der Funktionsargumente ein String ist. Dann ist das Ergebnis stets #Wert, obwohl die Funktion zum Schluss richtig erstellt wurde. Drücke ich nochmal F2 und Enter ist das Ergebnis korrekt. Es trifft aber nicht auf alle Funktionen zu, sondern nur auf einige. Bei manchen machen Strings keine Probleme. Hat jemand eine Idee dazu ?
Vielen Dank und vG.
AW

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem mit FunctionDialog
15.04.2022 21:54:19
onur
Ist das nicht alles, gelinde gesagt, etwas zu allgemein formuliert?
"Ich habe mehrere Funktionen" Welche denn?
"Bei einigen funktioniert das einwandfrei, bei anderen nicht." Bei welchen den und bei welchen nicht?
"Bei manchen machen Strings keine Probleme" Was für Strings und was für Probleme?
Wo sind den die selbst geschriebenen Funktionen? Wieso hast du weder sie noch eine (Beispiels-) Datei inkl. dem gesamten Code gepostet?
AW: Problem mit FunctionDialog
16.04.2022 11:32:26
Andreas
Guten Morgen,
kein Grund zur Aufregung - ich dachte mir schon, dass ich noch weiter ausholen muss. Es ist etwas komplexer und einiges basiert auch auf einer DLL. Ich versuche es aber mal.
Zunächst gibt es die Callback aus dem Ribbon:

Sub InsertMyFunction1()
'//Aktuellen Zelleninhalt merken
MyCurrentCellContent = ActiveCell.Formula
'//Prepopulation und Dialog aufrufen
ActiveCell.Formula = "=MyFunction1()"
Application.Dialogs.Item(xlDialogFunctionWizard).Show
'//Bei Abbruch
If ActiveCell.Formula = "=MyFunction1()" Then
ActiveCell.Formula = MyCurrentCellContent
End If
End Sub
Dann kommt die eigentliche UDF ins Spiel:

Function MyFunction1(MyInteger1 as Integer, MyString1 as String) as String
'//an dieser Stelle wird ein Objekt meiner DLL instanziert:
Dim MyObject as new MyDLL.MyClass1
'//dann werden dem Objekt Eigenschaften zugewiesen
MyObject.MyClassInteger = MyInteger1
MyObject.MyClassString = MyString1
'//und dann soll das Ergebnis zurück gegeben werden
MyFunction=MyObject.MyResult
End Function
Der Hund liegt irgendwo dort begraben, wo dem Objekt die Eigenschaft MyClassString = MyString1 zugewiesen wird. Wenn ich es so mache wie im Code oben, kommt als Ergebnis #Wert (Zelle mit F2 aktualisiert - alles ist korrekt). Wenn ich statt dessen einen festen Wert zuweise, z.B. 48 oder auch "48" funktioniert es. CStr(MyString1) funktioniert wiederum nicht. Jetzt ist wahrscheinliche die erste Frage, warum ich für eine Zahl einen String verwende. Die Zahl ist nur eine mögliche Angabe. Der Anwender könnte in anderen Fällen z.B. 1.4.6 angeben.
Wenn ich im FunctionDialog die 48 mit Anführungszeichen schreibe (also "48") funktioniert es. Das erkennt der Anwender aber wahrscheinlich nicht so einfach. Und vor allem gibt es weitere Funktionen, in denen zusätzliche Argumente angeben werden müssen, da funktioniert es komischerweise. Auch wenn ich in der Funktion oben hinter dem Argument MyString1 noch ein weiteres MyInteger2 as Integer angeben lassen, ohne das der Wert weiter verarbeitet wird, funktioniert es.
Beim Debuggen springt die Codeausführung nach dem Klick auf OK vom FunctionDialog auch nicht zurück in die Ribbon-Callback
Anzeige
AW: Problem mit FunctionDialog
16.04.2022 14:30:43
Andreas
Was mir beim Debuggen noch aufgefallen ist:
Wenn ich das per Einzelschritt debugge, springt VBA von der Sub InsertMyFunktion1 (Ribbon-Callback) nach Klick auf OK im FunctionDialog gar nicht in die Funktion.
Ich verstehe das nicht...

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige