Hallo zusammen,
ich sitze jetzt schon den 2. kompletten Abend an dieser b... Funktion, um sie nachher als Excel-Formel verwenden zu können.
Zweck der Formel: "SuperSVERWEIS" über das gesamte Workbook ab Worksheet(2). Sobald einer der SVERWEISe ein Ergebnis liefert (SVERWEIS soll nicht ins "Leere" laufen oder sich auf eine leere Zelle beziehen), soll dieses später in der Excel-Zelle angezeigt werden.
Das bisherige Script funktioniert soweit, jedoch überlebt die WorksheetFunction.VLookup offensichtlich nicht den 1. Durchlauf der For-Each-Schleife. Mit anderen Worten: es klappt nur für ein Tabellenblatt!
Hier der entsprechende Code:
Public Function SSVERWEIS( _
ByRef Suchkriterium As String, _
ByVal Matrix As Range, _
ByVal Spaltenindex As Variant)
Application.Volatile 'Formel soll sich aktualisieren
Dim sRange As Range
Dim ws As Worksheet
Dim sResult As Variant
sResult = ""
For Each ws In Worksheets
If ws.Index <> 1 Then 'SuperSVERWEIS ab dem 2. Tabellenblatt
Set sRange = Range(ws.Cells(Matrix.Row, Matrix.Column), ws.Cells(Matrix.Rows.Count, Matrix.Columns.Count))
'SVERWEIS durchführen, wenn 1. möglich und 2. Ergebnis vorliegt
If IsError(Application.WorksheetFunction.VLookup(Suchkriterium, sRange, Spaltenindex, False)) = False And _
Application.WorksheetFunction.VLookup(Suchkriterium, sRange, Spaltenindex, False) <> "" Then
sResult = Application.WorksheetFunction.VLookup(Suchkriterium, sRange, Spaltenindex, False)
Exit For
End If
End If
Next
If IsEmpty(sResult) = True Then
SSVERWEIS = ""
Else
SSVERWEIS = sResult
End If
End Function
Kann mir vielleicht jemand bei diesem Problem helfen? Ich bin dankbar für jeden Hinweis, der mich der Lösung ein Stück näher bringt!
Gruß TheQuest
|