Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

VLOOKUP - Abbruch bei #NV





Frage

Hallo liebes Forum, habe ein Problem mit dem VLOOKUP in meinem Makro - ich gebe zu wohl ein "Grünschnabel-Problem" aber vielleicht kann dennoch jemand helfen: Es liegt wohl daran, dass die Verweise mitunter nicht gültig sind (d.h. in der durchsuchten Tabelle sind nicht alle Suchrkriterien zu finden). Das Makro spuckt den "Fehler 1004 - Anwendungs- oder Objektorientierter Fehler" aus. Hier der Text: Sub sverweis2() Dim ws1 As Worksheet Dim ws2 As Worksheet Dim iRow As Integer, iValue As Integer iValue = 7000 Set ws1 = Sheets("Mittelabfluss_2007") Set ws2 = Sheets("aktuell") For iRow = 3 To 7000 ws1.Cells(iRow, 4).Value = _ WorksheetFunction.VLookup(ws1.Cells(iRow, 1).Value, ws2.Range("A2:C7000"), 2, False) Next iRow End Sub _______________________________________ Weiß jemand, wie sich der Fehler abfangen und durch einen Standardwert (hier: 0) ersetzen lässt? Vielen Dank im Voraus Grüße Stefan

Antwort 1 von coros

Hallo Stefan,

setze vor der VLookup-Befehlszeile ein "On Error Resume Next" und danach ein "On Error GoTo 0". Damit wird bei Auftreten eines Fehlers dieser Übersprungen und danach wird die Fehlerbehandlung wieder eingeschaltet. Dein Makro sieht dann wie folgt aus:

Option Explicit

Sub sverweis2()

Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim iRow As Integer, iValue As Integer
iValue = 7000

Set ws1 = Sheets("Mittelabfluss_2007")
Set ws2 = Sheets("aktuell")
For iRow = 3 To 7000
On Error Resume Next
ws1.Cells(iRow, 4).Value = _
WorksheetFunction.VLookup(ws1.Cells(iRow, 1).Value, ws2.Range("A2:C7000"), 2, False)
On Error GoTo 0
Next iRow
End Sub


Ich hoffe, dass Du das so meintest. Bei fargen melde Dich wieder.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von tikobe

Hi Oliver,

vielen Dank für die Hilfe.

Dein Lösungsvorschlag hat im Grunde funktioniert, nur unerklärlicherweise nicht bei allen Fehlern. Habe mir jetzt wie folgt beholfen:

Sub Forecast_akutell()

Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim iRow As Integer, iValue As Integer
iValue = 7000
Set ws1 = Sheets("Mittelabfluss_2007")
Set ws2 = Sheets("aktuell")
For iRow = 3 To Range("A65536").End(xlUp).Row
On Error Resume Next
ws1.Cells(iRow, 4).Value = _
WorksheetFunction.VLookup(ws1.Cells(iRow, 1).Value, ws2.Range("A2:C7000"), 2, False)
If ws1.Cells(iRow, 4) = "" Then ws1.Cells(iRow, 4) = 0
Next iRow
End Sub


Damit funktioniert es :-)
Danke nochmal & viele Grüße Stefan

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: