Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1736to1740
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

VBA Vlookup

VBA Vlookup
29.01.2020 17:26:02
Hans
Hallo zusammen
wenn ich in spalte A suchwert löschen dan bleiben aber in spalte C,D,E und F die werte erhalten.
wie kan mann also bzw. suchwert A5 löschen und alle ander ausgaben (C5,D5,E5 und F5 werten werden dan auch entfernt.
anbei mein Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim var As Variant
If Target.Column  1 Then Exit Sub
With Application
var = .VLookup(Target.Value, _
Worksheets("Artikellijst").Columns("C:AJ"), 3, 0)
If Not IsError(var) Then
Application.EnableEvents = False
On Error GoTo ERRORHANDLER
Target.Offset(0, 2) = .VLookup(Target.Value, _
Worksheets("Artikellijst").Columns("C:AJ"), 3, 0)
Target.Offset(0, 3) = .VLookup(Target.Value, _
Worksheets("Artikellijst").Columns("C:AJ"), 7, 0)
Target.Offset(0, 4) = .VLookup(Target.Value, _
Worksheets("Artikellijst").Columns("C:AJ"), 11, 0)
Target.Offset(0, 5) = .VLookup(Target.Value, _
Worksheets("Artikellijst").Columns("C:AJ"), 34, 0)
End If
End With
ERRORHANDLER:
Application.EnableEvents = True
End Sub
Vg
Hans

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Vlookup
29.01.2020 18:19:23
Werner
Hallo,
so?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Var as Variant
If Target.Column = 1 And Target.Count = 1 Then
If Target = "" Then
Target.Offset(, 1).Resize(, 5).ClearContents
Else
With Application
Var = .VLookup(Target.Value, _
Worksheets("Artikellijst").Columns("C:AJ"), 3, 0)
If Not IsError(Var) Then
Target.Offset(0, 2) = .VLookup(Target.Value, _
Worksheets("Artikellijst").Columns("C:AJ"), 3, 0)
Target.Offset(0, 3) = .VLookup(Target.Value, _
Worksheets("Artikellijst").Columns("C:AJ"), 7, 0)
Target.Offset(0, 4) = .VLookup(Target.Value, _
Worksheets("Artikellijst").Columns("C:AJ"), 11, 0)
Target.Offset(0, 5) = .VLookup(Target.Value, _
Worksheets("Artikellijst").Columns("C:AJ"), 34, 0)
End If
End With
End If
End If
End Sub
Gruß Werner
Anzeige
AW: VBA Vlookup Owt
29.01.2020 19:11:35
Hans
Hallo Werner,
genauso :-)
Danke
Hans
Gerne u. Danke für die Rückmeldung. o.w.T.
29.01.2020 21:15:13
Werner
AW: VBA Vlookup Owt
30.01.2020 07:35:17
Luschi
Hallo Hans,

genauso :-)
Dabei frage ich mich dann, warum mit dieser Zeile: Target.Offset(, 1).Resize(, 5).ClearContents
auch der Inhalt von Zellen in Spalte B mit geleert werden, obwohl die nachfolgenden Vba-Zeilen keinen neuen Wert in Spalte 'B' schreiben.
Außerdem sind die beiden Befehle Appication.EnableEvents = False/True auf der Strecke geblieben und du einen Kreisverkehr im Vba-Code hast.
Gruß von Luschi
aus klein-Paris
AW: VBA Vlookup Owt
30.01.2020 09:29:58
Werner
Hallo Luschi,
hier hast du sicher recht, mein Fehler
 Target.Offset(, 1).Resize(, 5).ClearContents

müsste natürlich
 Target.Offset(, 2).Resize(, 4).ClearContents

sein.
Aber warum EnableEvents = False ?
Überwacht wird Spalte A, aber weder beim ClearContents noch beim VLookup ist Spalte A betroffen.
Gruß Werner
Anzeige
AW: VBA Vlookup Owt
30.01.2020 13:10:03
Luschi
Hallo Werner,
jeder Vba-Befehl, der Zellwert-Änderungen im jeweiligen Tabellenblatt vornimmt, löst ein neues Ereignis
'Worksheet_Change' aus. Am besten kann man das nachverfolgen, wenn man in der Zeile
'If Target.Column = 1 And Target.Count = 1 Then' einen Haltepunkt (F9-Taste) setzt und dann mit der Eingabe in Spalte 'A' beginnt:
- Vba hält an HP an
- mit F8-Taste schrittweise den Code weiter durchsteppen
- und stellt fest, das bei jedem Target.Offset(0, 2) = .VLookup(…) bzw. .ClearContents
- der Debugger wieder von vorn beginnt
- dieses Verhalten kann man mit Application.EnableEvents = False zu Beginn des Events abschlaten
- muß es aber unbedingt am Emde des Events auch wieder einschalten durch setzen der Property auf True
With Allication
.EnableEvents O False
'weiterer Code
.EnableEvents = True
End With
Gruß von Luschi
aus klein-Paris
Anzeige
AW: VBA Vlookup Owt
31.01.2020 12:47:02
Werner
Hallo Luschi,
hast natürlich recht.
Ich hatte nur die Endlosschleife im Kopf für den Fall, dass beim Change eine Zelle des Target betroffen ist.
Gruß Werner

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige