PDA

Vollständige Version anzeigen : Eigene Funktion rechnet nicht automatisch


phischmi
22.08.2017, 12:26
Hallo zusammen,

ich habe eine kleine Funktion geschrieben, welche einen String in der Form "01 | 42 | 90 etc." in eine Liste zerlegt und prüft, ob einzelne Zahlenkombis enthalten sind.

Die Funktion selbst funktioniert auch einwandfrei, jedoch ist der Rückgabewert beim Öffnen der Mappe zunächst immer "FALSE".
Erst wenn ich doppelt in die Zelle mit der Funktion klicke (oder F2) und Enter drücke, rechnet die Formel.
Strg + Alt + F9 etc. funktionieren ebenfalls nicht.
Woran mag dieses verhalten liegen und was muss ich ändern, damit wieder automatisch gerechnet wird?


Function Aufteilen(Text As String, Suchfeld As String) As Boolean
Dim liste, i&
liste = Replace(Text, " ", "")
liste = Split(liste, "|")
For i = LBound(liste) To UBound(liste)
If liste(i) Like "*" & Suchfeld Then
Aufteilen = True
Exit For
End If
Next i
End Function


Vielen Dank!

Philipp

Jonas0806
22.08.2017, 13:40
Hallo Philipp,

wieso verwendest Du denn dafür überhaupt VBA? Und dann auch noch eine so umständliche Funktion?

Am besten beschreibst Du lieber mal dein Problem und dein Ziel, anhand von einer Beispieldatei klappt das am besten. Ich denke, dass es da bessere Wege gibt.

Beverly
22.08.2017, 13:44
Hi Philipp,

vielleicht hilft, wenn du die Zeile Application.Volatile ergänzt?

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

EarlFred
22.08.2017, 15:42
Hallo Philipp,

je nachdem, was Du suchst, kannst Du auch hiermit finden:
Function Aufteilen(Text As String, Suchfeld As String) As Boolean
Aufteilen = InStr(Replace(Text, " ", ""), Suchfeld)
End Function
oder mit dieser Arbeitsblattfunktion:
=SUCHEN(Suchfeld;Text )>0?

Spannend wird es erst, wenn z. B. "4" in "42" oder "2" in "42" gesucht und unterschieden werden soll.

Wie übergibst Du die Werte an die UDF? Per Zellbezug oder "hart codiert" beim Aufruf?

Application.Volatile ist nicht zu empfehlen, wenn zahlreiche dieser Funktionen verwendet werden.

Grüße
EarlFred