Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VLookup - Fehlermeldung

VLookup - Fehlermeldung
KLE
Hallo,
...ich habe eine Datei, in der ich per VBA einen SVerweis ausführen möchte.
Dazu habe ich einen Bereich "Laender" per Set zugewiesen.
Nun soll der in Laender gesuchte Wert, wenn vorhanden - den passenden Eintrag der 2'ten Spalte und 3'ten Spalte aus Länder in meine Tabelle eintragen.
Dazu gehe ich 2x mit der VLOokup-Funktion vor.
Bei Fehler (wenn kein Treffer) soll in der Tabelle dann "" NICHTS eingetragen werden und er soll weiter suchen...
Hier mein Versuch, der beim 2'ten Lauf (Spalte3) mit einer Fehlermeldung endet:
On Error Resume Weiter
.cells(LZeile, 21) = Application.WorksheetFunction.VLookup(.Cells(LoZeileD, 11).Value, Laender, 2, 0)
Weiter: .cells(Lzeile, 21) = ""
On Error Resume Weiter2
.cells(LZeile, 22) = Application.WorksheetFunction.VLookup(.Cells(LoZeileD, 11).Value, Laender, 3, 0)
Weiter2: .cells(Lzeile, 22) = ""
Wie kann ich es besser (funktionsfähig) machen ?!?
Gruß und Danke
Kay
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VLookup - Fehlermeldung
19.05.2011 14:06:32
Rudi
Hallo,
am besten ohne Worksheetfunction, On Error und GoTo.
If IsError(Application.VLookup(.Cells(LoZeileD, 11).Value, Laender, 2, 0)) Then
.Cells(LZeile,21) = ""
Else
.Cells(LZeile,21) = Application.VLookup(.Cells(LoZeileD, 11).Value, Laender, 2, 0)
End If

Gruß
Rudi
Anzeige
AW: VLookup - Fehlermeldung
19.05.2011 14:22:53
KLE
Danke Rudi ! Da mein Chef mich drängelte, habe es nach langem überlegen, parallel jetzt so gemacht:
z = Application.WorksheetFunction.CountIf(Laender, .Cells(LoZeileD, 11).Value)
If z 0 Then
.Cells(LoZeileD, 9).Value = Application.WorksheetFunction.VLookup(.Cells(LoZeileD, 11).Value, Laender, 2, 0) ' Main Region
.Cells(LoZeileD, 10).Value = Application.WorksheetFunction.VLookup(.Cells(LoZeileD, 11).Value, Laender, 3, 0) ' Sub Region
Else
.Cells(LoZeileD, 9).Value = ""
.Cells(LoZeileD, 10).Value = ""
End If
Werde aber Deine Version nachher noch probieren...vielen Dank für Deine Antwort!
Gruß
Kay
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VLookup: Fehlermeldungen in VBA effizient abfangen


Schritt-für-Schritt-Anleitung

Um VLookup in VBA zu verwenden und dabei Fehler abzufangen, kannst Du folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Definiere den Bereich: Zuerst musst Du sicherstellen, dass der Bereich, aus dem Du Werte abrufen möchtest, korrekt definiert ist.

    Dim Laender As Range
    Set Laender = ThisWorkbook.Sheets("Daten").Range("A2:C100") ' Beispielbereich
  2. Verwende VLookup ohne Fehlerbehandlung: Statt On Error Resume Next zu verwenden, ist es besser, die Fehler direkt abzufangen. Hier ist ein Beispiel, wie Du das umsetzen kannst:

    Dim Suchwert As Variant
    Suchwert = .Cells(LoZeileD, 11).Value
    
    If Not IsError(Application.VLookup(Suchwert, Laender, 2, False)) Then
        .Cells(LZeile, 21) = Application.VLookup(Suchwert, Laender, 2, False)
    Else
        .Cells(LZeile, 21) = ""  ' Wenn kein Treffer
    End If
  3. Wiederhole den Vorgang für die nächste Spalte:

    If Not IsError(Application.VLookup(Suchwert, Laender, 3, False)) Then
        .Cells(LZeile, 22) = Application.VLookup(Suchwert, Laender, 3, False)
    Else
        .Cells(LZeile, 22) = ""  ' Wenn kein Treffer
    End If

Häufige Fehler und Lösungen

Hier sind einige häufige Fehler, die beim Arbeiten mit VLookup in VBA auftreten können, und ihre Lösungen:

  • Fehler: VLookup funktioniert nicht: Dies kann passieren, wenn der Suchwert nicht im angegebenen Bereich vorhanden ist. Verwende die IsError-Funktion, um dies abzufangen.

  • Fehler: #NV: Wenn Du den Fehler "#NV" erhältst, bedeutet dies, dass der Wert nicht gefunden wurde. Stelle sicher, dass der Wert im Suchbereich vorhanden ist oder setze eine geeignete Fehlerbehandlung ein.


Alternative Methoden

Falls Du eine alternative Methode zur Verwendung von VLookup in VBA suchst, kannst Du auch DLookup verwenden. Hier ist ein einfaches Beispiel:

Dim Ergebnis As Variant
Ergebnis = DLookup("Spalte2", "Laender", "Suchfeld='" & .Cells(LoZeileD, 11).Value & "'")

If Not IsNull(Ergebnis) Then
    .Cells(LZeile, 21) = Ergebnis
Else
    .Cells(LZeile, 21) = ""  ' Wenn kein Treffer
End If

Praktische Beispiele

Hier sind einige praktische Beispiele, die Dir helfen, VLookup in verschiedenen Szenarien anzuwenden:

  1. Einfaches VLookup:

    Dim Land As String
    Land = .Cells(LoZeileD, 11).Value
    .Cells(LZeile, 21) = Application.WorksheetFunction.VLookup(Land, Laender, 2, False)
  2. Mit Fehlerabfrage:

    If Not IsError(Application.VLookup(Land, Laender, 2, False)) Then
        .Cells(LZeile, 21) = Application.WorksheetFunction.VLookup(Land, Laender, 2, False)
    Else
        .Cells(LZeile, 21) = ""  ' Wenn kein Treffer
    End If

Tipps für Profis

  • Verwende Application.WorksheetFunction: Dies kann helfen, wenn Du zusätzliche Funktionen von Excel nutzen möchtest. Zum Beispiel:

    .Cells(LZeile, 21) = Application.WorksheetFunction.VLookup(.Cells(LoZeileD, 11).Value, Laender, 2, False)
  • Optimierung: Wenn Du viele VLookup-Operationen durchführst, könnte es effizienter sein, die Daten in ein Array zu laden und die Suchen dort auszuführen.


FAQ: Häufige Fragen

1. Wie kann ich VLookup in VBA richtig verwenden?
Verwende die Application.VLookup oder Application.WorksheetFunction.VLookup und achte darauf, Fehler mit IsError abzufangen.

2. Was ist der Unterschied zwischen VLookup und DLookup?
VLookup sucht in einem Bereich, während DLookup aus einer Tabelle (z.B. einer Datenbank) abruft und eine Bedingung benötigt.

3. Was mache ich, wenn ich einen Fehler bei der Verwendung von VLookup in VBA erhalte?
Stelle sicher, dass der Suchwert im angegebenen Bereich vorhanden ist und verwende Fehlerbehandlungen wie IsError, um mit nicht gefundenen Werten umzugehen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige