Thema Datum  Von Nutzer Rating
Antwort
Rot WorksheetFunction.VLookup + For Each = Problem!
18.05.2011 22:20:33 TheQuest
NotSolved
18.05.2011 22:55:38 Till
NotSolved
18.05.2011 23:18:49 TheQuest
NotSolved
19.05.2011 18:41:06 Till
NotSolved
20.05.2011 22:07:22 TheQuest
NotSolved
24.05.2011 00:21:29 Till
NotSolved
24.05.2011 17:56:07 TheQuest
NotSolved
25.05.2011 00:46:38 Till
NotSolved

Ansicht des Beitrags:
Von:
TheQuest
Datum:
18.05.2011 22:20:33
Views:
2172
Rating: Antwort:
  Ja
Thema:
WorksheetFunction.VLookup + For Each = Problem!

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


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot WorksheetFunction.VLookup + For Each = Problem!
18.05.2011 22:20:33 TheQuest
NotSolved
18.05.2011 22:55:38 Till
NotSolved
18.05.2011 23:18:49 TheQuest
NotSolved
19.05.2011 18:41:06 Till
NotSolved
20.05.2011 22:07:22 TheQuest
NotSolved
24.05.2011 00:21:29 Till
NotSolved
24.05.2011 17:56:07 TheQuest
NotSolved
25.05.2011 00:46:38 Till
NotSolved