Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1340to1344
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VLookUp Worksheet_Change - Bitte um Hilfe

VLookUp Worksheet_Change - Bitte um Hilfe
20.12.2013 14:19:37
Thorben
Hallo Forumfreunde,
Ich versuche gerade folgendes Abzubilden:
Ich habe eine Datei bei der ich bei Eingabe einer Nummer in Spalte A3:A500
in Spalte B3:B500 die zugehörige Beschreibung mit VLookUp aus eine anderen Tabelle holen möchte per Worksheet_Change.
Mit diesem Code der so nicht funktioniert:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.EnableEvents = False
[B3:B500] = WorksheetFunction.VLookup(Worksheets("Tabelle28").Range("A3:A500").Value, _
Worksheets("Tabelle2").Range("A2:C380000"), 3, 0)
Application.EnableEvents = True
End Sub

Wichtig: wenn nichts in Spalte A eingetragen wird soll auch nichts in Spalte B passieren.
Könnt Ihr mir hier helfen?
Vielen Dank schon einmal im Voraus.
MfG
Thorben

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

Betreff
Datum
Anwender
Anzeige
AW: VLookUp Worksheet_Change - Bitte um Hilfe
20.12.2013 14:55:10
fcs
Hallo Thorben,
der 1. Schritt bei dem Change_Ereignismakro ist normalerweise die Überprüfung des Bereichs der geänderten Zelle.
Die VLookup-Funktion bereitet unter VBA Fehlerprobleme, wenn keine zutreffender Wert gefunden wird. Deshalb muss man einiges an Klimmzügen machen.
Einfacher ist es die SVERWEIS-Funktion in die Zelle zu schreiben und dann durch den Wert zu ersetzen.
Gruß
Franz
'Variante 1
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim rngZelle As Range, varTest
If Not Application.Intersect(Target, Range("A2:A500")) Is Nothing Then
Application.EnableEvents = False
For Each rngZelle In Application.Intersect(Target, Range("A2:A500"))
With rngZelle.Offset(0, 1)
If IsEmpty(rngZelle) Then
.ClearContents
Else
.FormulaR1C1 = "=VLookup(R[0]C[-1], 'Tabelle2'!R2C1:R380000C3, 3, False)"
.Calculate
.Value = .Value
End If
End With
Next
Application.EnableEvents = True
End If
End Sub
'Variante 2
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim rngZelle As Range, varTest
If Not Application.Intersect(Target, Range("A2:A500")) Is Nothing Then
Application.EnableEvents = False
For Each rngZelle In Application.Intersect(Target, Range("A2:A500"))
With rngZelle.Offset(0, 1)
If IsEmpty(rngZelle) Then
.ClearContents
Else
varTest = Application.Match(rngZelle.Value, Worksheets("Tabelle2").Range("A2:C380000") _
, 0)
If IsNumeric(varTest) Then
rngZelle.Offset(0, 1) = WorksheetFunction.VLookup(rngZelle.Value, _
Worksheets("Tabelle2").Range("A2:C380000"), 3, 0)
Else
rngZelle.Offset(0, 1) = "#NV"
End If
End If
End With
Next
Application.EnableEvents = True
End If
End Sub

Anzeige
Danke Dir, Var. 1 läuft, Var.2 gibt NV zurück !!!!
20.12.2013 15:44:42
Thorben
Hallo Franz,
danke erstmal für den Code.
Variante 1 funzt
Bei Variante 2 gibt er mir NV zurück !?
k.A. warum!!!
MfG
Thorben

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige