Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1676to1680
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 geht nicht

Vlookup geht nicht
21.02.2019 10:05:13
Junior
Hallo,
ich habe folgende Funktion:

Sub vba_sverweis()
Dim Ergebnis As Variant
Dim Suche As Variant
Ergebnis = Range("AS4")
Suche = Range("AR4")
Ergebnis = WorksheetFunction.vlookup(Suche, Sheets("Datengrundlage").[a1:e99999], 5, False)
End Sub
In Zelle AS4 soll der Wert eingetragen werden, der durch Suche des Inhalts von AR4 in dem Tabellenblatt Datengrundlage gefunden wird. Wird AR4 dort gefunden, dann soll sich AS4 mit dem Inhalt der 5. Spalte aus dem Tabellenblatt Datengrundlage füllen.
Über den normalen Sverweis alles kein Problem, aber bei der VBA Logik geht es irgendwie nicht. Hat jemand eine Idee? Zusätzlich würde ich gerne die feste Bezeichnung von AS4 und AR4 durch "AS"&activecell.row bzw. AR&activecell.row ersetzen. Geht aber auch nicht :(
Danke.
Junior

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Vlookup geht nicht
21.02.2019 10:54:00
Luschi
Hallo Junior
ich hoffe, Dir ist bewußt, daß 'Ergebnis' eine Variable im Arbeitsspeicher ist und sicher auch im Erfolgsfall den gesuchten Wert enthält.
Und was nun?!? Es fehlt der letzte Schritt zum Glück - Transportieren des Speichervariableninhalts in den Inhalt der Zelle 'AS4' per Vba-Befehl.
Gruß von Luschi
aus klein-Paris
AW: Vlookup geht nicht
21.02.2019 12:10:35
Junior
Wie geht dieser schritt?
AW: Vlookup geht nicht
21.02.2019 12:10:36
Junior
Wie geht dieser schritt?
AW: Vlookup geht nicht
21.02.2019 12:31:58
Rudi
Hallo,
Sub vba_sverweis()
Dim Ergebnis As Range
Dim Suche As Variant
Set Ergebnis = Range("AS" & ActiveCell.Row)
Suche = Range("AR" & ActiveCell.Row)
Ergebnis = WorksheetFunction.VLookup(Suche, Sheets("Datengrundlage").Range("A:E"), 5, False)
End Sub

Gruß
Rudi
Anzeige
AW: Vlookup geht nicht
21.02.2019 14:44:56
Junior
Hallo Rudi, 1000 Dank. Es läuft perfekt. Allerdings habe ich vergessen, dass ich eine error logik brauche. Wenn er den suchwert aus AR nicht findet, muss "kein Eintrag" in die Ergebniszelle.
AW: Vlookup geht nicht
21.02.2019 14:54:22
Daniel
Hi
Sub vba_sverweis()
With Range("AS" & ActiveCell.Row)
.FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-1],Datengrundlage!C1:C5,5,false),""kein Eintrag"")"
.Formula = Value
End With
End Sub
gruß Daniel
dann so
21.02.2019 15:28:20
Rudi

Sub vba_sverweis()
Dim Ergebnis As Range
Dim Suche As Variant, vntTMP As Variant
Set Ergebnis = Range("AS" & ActiveCell.Row)
Suche = Range("AR" & ActiveCell.Row)
vntTMP = Application.VLookup(Suche, Sheets("Datengrundlage").Range("A:E"), 5, False)
If IsError(vntTMP) Then vntTMP = "kein Eintrag"
Ergebnis = vntTMP
End Sub

Anzeige
AW: dann so
21.02.2019 18:12:50
Junior
Danke. Was versteckt sich hinter vnttmp?
AW: dann so
25.02.2019 11:02:43
Daniel
eine Variable vom Typ Variant.
das Application.VlookUp gibt dir einen Fehlerwert zurück, wenn des den Suchbegriff nicht finden kann.
nur Variablen vom Typ Variant können einen Fehlerwert aufnehmen.
etwas anschaulicher wird das ganze vielleicht, wenn man in VBA statt dem VLookUp die Funktino FIND verwendet.
dim Ergebniszelle as range
dim Suchwert as Variant
dim Fundstelle as range
set ZielZelle = Range("AS" & ActiveCell.row)
Suchwert = Range("AR" &  ActiveCell.Row).Value
set Fundstelle = Sheets("Datengrundlage").Columns(1).Find(what:=Suchwert, _
lookat:=xlwhole, lookin:=xlvalues)
if Fundstelle is nothing then
Ergebniszelle.Value = "kein Eintrag"
else
Ergebniszelle.Value = Fundstelle.Offset(0, 4).Value
End if
Gruß Daniel
Anzeige
AW: Vlookup geht nicht
21.02.2019 13:24:54
Daniel
Hi
...
Set Ergebnis = Range("AS4")
Ergebnis.Value = Worksheetfunction.VLookUp(...)
...
du musst unterscheiden zwischen Wert- und Objektvariable
so wie du das hier schreibst, ist Ergebnis nur eine einfache Wertvariable, welcher du den Zellwert aus der Zelle AS4 zuweist. Ergebnis enthält dann aber wirklich nur diesen Wert und keinerlei Verknüpfung zu der Zelle.
was du hier benötigst, ist Ergebnis als Objektvariable für das Objekt "Zelle AR4", denn du willst später nicht nur den Wert aus dieser Zelle verwenden, sondern die Zelle selbst.
Objektvariablen werden in VBA immer mit SET zugewiesen.
wenn du schon weißt dass du der Variable Ergebnis eine Zelle also Objekt zuweisen willst, solltest du das bei der Deklaration gleich angeben:
Dim Ergebnis as Range

dann bekommst du eine Fehlermeldung, wenn du die Variable in anderer Form verwenden willst, und du kannst die Vorzüge der IntelliSense nutzen.
Gruß Daniel
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige