@Rainer: Danke für die Antwort, mit Deiner Lösung ist meine vorherige Frage beantwortet!
Ich bitte aber nochmals um Hilfe.
Da ich die Funktion aus mehreren Tabellenblättern heraus aufrufen muß, möchte ich eine benutzerdefinierte Funktion daraus machen. Dazu habe ich folgenden Code definiert:
Global suchargument As String
Global ergebnis As Integer
If Not Application.Intersect(Target, Range("K9:K223")) Is Nothing Then
suchargument = CLng(Target.Offset(0, -8)) & Target.Offset(0, 1)
Das Suchargument wird zusammengesetzt aus Target.Offset(0, -8) (enthält ein Datum in der Form TT.MM.JJ welches in eine fortlaufende Nummer umgesetzt wird) und einer 1-stelligen Kennziffer.
ergebnis = ermitteln_ergebnis(suchargument) 'Funktion aufrufen
End If
Function ermitteln_ergebnis(suchargument As String)
ermitteln_ergebnis.FormulaLocal = _
"=WENN(ISTFEHLER(SVERWEIS(suchargument;Testtab!$C$3:$D$140;2;FALSCH)); _
SVERWEIS(WERT("99999"& Right(suchargument, 1));Testtab!$C$3:$D$140;2;FALSCH); _
SVERWEIS(suchargument;Testtab!$C$3:$D$140;2;FALSCH);"")
End Function
Folgendes soll passieren:
Wird das Suchargument in der Testtab gefunden soll der Wert aus der 2. Spalte zurückgegeben werden. Anderenfalls, wird ein neues Suchargument aus der Konstanten "99999" und der letzten Stelle des vorherigen Suchargumentes gebildet, welches auf jeden Fall gefunden wird. Bei der Suche nach einer Problemlösung bin ich auf die Eigenschaft
.FormulaLocal gestoßen und da ich mit der VBA Syntax auf Kriegsfuß stehe, habe ich einfachhalber einen funktionierenden SVERWEIS aus einer Zellfunktion, unter Verwendung von
.FormulaLocal in diese Funktion übernommen. Ich komme aber nicht weiter, der Debugger bemängelt die Syntax der Funktion (Fehler beim Kompilieren / Erwartet: Anweisungsende - 2. SVERWEIS ist grau hinterlegt),.
Wo ist der Syntaxfehler? Oder grundsätzlich gefragt, geht das überhaupt so und wenn nicht, wie könnte man das Problem lösen?