VBA - VLookup Problem

Hallo Experten,

ich versuche gerade die SVerweis-Funktion über VLookup in VBA nachzubilden. Ich möchte in Zelle C6 das Ergebnis von

=SVerweis(B6;A:A;1;False) ausgeben, d.h.

Suchkriterium: Zelle B6
Matrix in der gesucht werden soll: Spalte A.

In VBA habe ich das wie folgt realisiert:

Public Sub SVerweis()
With Tabelle1
.Range(„C6“).Value = Application.WorksheetFunction.VLookup(.Range(„B6“).Value, .Range(„A:A“), 1, False)
End With
End Sub

Leider bekomme ich immer den Laufzeitfehler ‚1004‘:

„Die VLookup-Eigenschaft des WorksheetFunction-Objektes kann nicht zugeordnet werden.“

Kann mir bitte jemand helfen?

Vielen Dank schonmal.

Gruß
Thomas

Hallo,

habe den Code mal getestet und festgestellt, dass der Fehler nicht auftritt sofern der Wert in B6 in Spalte A auftaucht und sich daher ein Ergebnis ergibt.
Der Fehler ist also analog der Ausgabe #NV bei direkter Verwendung der Funktion SVERWEIS in Excel zu sehen.
Das muss man im Code abfangen.

Public Sub SVerweis()
With Tabelle1
On Error Resume Next 'bei Fehler nächster Befehl
.Range("C6").Value = Application.WorksheetFunction.VLookup(.Range("B6"), \_
 .Range("A:A"), 1, False)
If Err.Number \> 0 Then .Range("C6").Value = "#NV" 'oder alternativ andere Ausgabe
On Error GoTo 0 'normale Fehlerbehandlung
End With
End Sub

Gruß, tester

Hallo tester,

vielen Dank für die schnelle Antwort.
Habe deinen Code übernommen, jetzt funktioniert es genau wie ich mir das vorgestellt habe.

Also, nochmals dankeschön.

Gruß
Thomas

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Wieso Vlookup?

Public Sub SVerweis()
With Tabelle1
.Range(„C6“).Value =
Application.WorksheetFunction.VLookup(.Range(„B6“).Value,
.Range(„A:A“), 1, False)
End With
End Sub
Leider bekomme ich immer den Laufzeitfehler ‚1004‘:

Hi Thomas,

vlookup ist für anderes gedacht, klar geht es auch, aber man muß dann den Fehler bei Nichtfinden abfangen.

probiers mal so:

Option Explicit

Sub tt()
With Worksheets("Tabelle1")
 .[C6] = ""
 If Application.WorksheetFunction.CountIf(.[A:A], .[B6]) Then .[C6] = .[B6]
End With
End Sub

Gruß
Reinhard