Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

benutzerdefinierte Funktion läuft immer mit





Frage

salvete ich habe eine funktionierende benutzerdefinierte Funktion gebastelt (letztlich nur ein unterstützter SVERWEIS), so weit, so gut siehe: [url]https://supportnet.de/threads/2134720[/url] Dazu habe ich einen keinen Dialog erstellt, der diese Funktion verwendet. Problem: steht diese Funktion bereits einmal in einem Blatt und ich füge sie mittels Dialogmakro erneut ein, springt der Code in die Funktion. Und zwar genau an der Stelle, an der das Makro zum erstenmal einen Wert in die Tabelle schreibt. Ist nicht soo tragisch, bei z.B. der 100sten Verwendung dieser Funktion in einer Mappe fällt es aber langsam auf. Bringt die Funktion an irgendeiner Stelle aber #WERT!, weil ein Wert nicht beigestellt werden kann, springen alle in der Mappe gesetzten eigenen Funktionen auch auf #WERT! Mit F2-ENTER kann man es wieder geradeziehen, aber es soll natürlich funtkionieren, ohne immer nachzuarbeiten. Gebe ich die Funktion manuell ein oder durch autoausfüllen, ist alles in Ordnung. Ich verwende Excel97. Oder muss man wieder mit Select oder Activate nachhelfen? Hat jemand eine Idee? mfg schnallgonz

Antwort 1 von schnallgonz

Zitat:
Dazu habe ich einen keinen Dialog erstellt

ähh es muss natürlich "einen Dialog erstellt" heißen,
das Problem macht mich fertig....

und der Code stammt von rainberg, wie man obigem Link entnehmen kann

gruß
schnallgonz

Antwort 2 von schnallgonz

genau genommen
"einen kleinen Dialog"

Antwort 3 von schnallgonz

Salvete,
ich führ erstmal weiter Selbstgespräche.
Ein kleines "on error resume next" in der Funktion wirkt manchmal Wunder.
Es wird anstatt #WERT! eine "0" ausgegeben und die Funktion wird nicht ausgebremst.

Trotzdem verstehe ich nicht, warum die manuelle Eingabe der Funktion immer funzt und die makrogesteuerte nicht bei #WERT!.

Mit
Application.Volatile(False)
habe ich es auch schon probiert, egal,
sobald das Makro den ersten Zelleneintrag vornimmt, rauscht die Funktion entsprechend der Anzahl der Zellen mit dieser Funktion durch.

Ich hoffe, ich habe das Problem nachvollziehbar geschildert, mir raucht der Schädel.
gruß
schnallgonz

Antwort 4 von meinTipp

Hallo Unbekannte(r),
ohne vollständigen Code ist hier wohl nichts los!

Gruss Rolf

Antwort 5 von schnallgonz

Salve,
die Funktion steht im obigen Link
und nach dem Dialog geht es in etwa so weiter:
ActiveCell.Offset(0, -1).Value = Vari3
ActiveCell.FormulaLocal = "=FixUndFoxi (" & _
                            Vari1.Address(RowAbsolute:=False, ColumnAbsolute:=False) & "; " _
                            & Vari2.Address(RowAbsolute:=False, ColumnAbsolute:=False) & ")"

Sobald der Code einen Wert schreibt (wie oben also den Wert aus vari3)
springt er in die Funktion und führt so oft aus, wie Funktionen in der Tabelle stehen.

Wie gesagt, mit "on error..." läuft es durch, Frage ob man die
unnötige Funktionsschleife nicht abklemmen kann.
Hier
http://www.herber.de/forum/archiv/200to204/t201142.htm
ich ein paar Infos gefunden, könnte doch an Excel97 liegen,
obwohl meine Funktion nicht parameterlos ist.

gruß
schnallgonz