Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1216to1220
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

SVerweis von Userform aus

SVerweis von Userform aus
Userform
Hallo,
ich bräuchte mal wieder dringend Hilfe, da ich mit meinen bescheidenen VBA Kenntnisse nicht weiter komme.
Ich habe eine Userform erstellt und möchte diese über einen SVerweis mit einer Tabelle verbinden.
In Spalte A stehen Zimmernummern und in Spalte B das Datum des Vertragsabschlusses.
In der Userform gibt es eine Combobox cboZimmer, in der das Zimmer ausgewählt werden kann. In einer textbox txtVertrag soll nach Auswahl das entsprechende Datum erscheinen.
Bisher hatte ich es mit folgender Syntax gelöst:
txtVertrag = ActiveSheet.Cells(cboZimmer.ListIndex + 7, 2)
Nun musste ich jedoch auf Wunsch des zukünftigen Nutzers in der Tabelle unter jedes Zimmer eine leere Zeile für Kommentare einfügen und so funktioniert natürlich der Code nicht mehr, da in der Liste die Leerzeilen nicht mitgezählt werden.
Ich habe nun versucht das Problem mit einem SVerweis zu lösen, aber leider funktioniert es nicht. Ich bekomme immer die Fehlermeldung "Die VLookup-Eigenschaft des WorksheetFunction-Objektes kann nicht zugeordnet werden". Folgenden Code habe ich versucht:
txtVertrag = Application.WorksheetFunction.VLookup(cboZimmer.Value, Range("A8:A65536"), 2, True)
Kann mir vielleicht jemand einen Tip geben, was ich falsch mache? Muss dringend weiterkommen!
Vielen Dank schon mal im Voraus,
Kiki

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: SVerweis von Userform aus
29.05.2011 23:27:32
Userform
Hallo Kiki,
du willst aus dem Sverweis den Wert aus dem 2. Spaltenindex und gibst dem Sverw. aber nur eine Spalte vor..
so sollte es gehen
Application.WorksheetFunction.VLookup(2, Range("A8:B65536"), 2, False)
und der Bereich_Verweis muss aus False wenn genaue Übereinstimmung wiedergeben werden soll.
Grüße
Steffen
Änderung
29.05.2011 23:32:22
CitizenX
sorry,
da hatte sich noch ein Fehler eingeschlichen
so ist es richtig:
Application.WorksheetFunction.VLookup(cboZimmer.Value, Range("A8:B65536"), 2, False)
Grüße
Steffen
AW: Änderung
29.05.2011 23:54:55
kiki
Hallo,
vielen Dank für die schnelle Antwort!
Leider funktioniert es immer noch nicht, bekomme immer noch die gleiche Fehlermeldung, obwohl ich es genauso korrigiert habe
txtVertrag = Application.WorksheetFunction.VLookup(cboZimmer.Value, Range("A8:B1515"), 2, False)
Grüße,
Kiki
Anzeige
Text ungleich Zahl?
30.05.2011 01:17:12
Erich
Hi,
die Fehlermeldung kommt, wenn der Suchbegriff nicht gefunden wird.
Das kann zwei Gründe haben:
a) cboZimmer kommt in Spalte A der Tabelle gar nicht vor
b) Die Zimmer in der Tabelle sind Zahlen. cboZimmer.Value dagegen ist ein Text. Dann kann SVERWEIS nichts finden.
a) scheidet vermutlich als Ursache aus, da die Zimmernummern für die ComboBox wohl aus der Tabelle stammen.
b) kannst du bereinigen, indem du die Zahl CDbl(cboZimmer.Value) statt cboZimmer.Value suchen lässt:
Application.WorksheetFunction.VLookup(CDbl(cboZimmer.Value), Range("A8:B65"), 2, False)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Text ungleich Zahl?
30.05.2011 02:44:10
Gerd
Hi
c) Es wird im falschen Blatt gesucht (da keines angegeben u. evtl. ein anderes aktiviert ist).
Eine Beispielmappe des Fragestellers mit dem Fehler würde die Klärung fördern.
Gruß Gerd
AW: Text ungleich Zahl?
30.05.2011 11:01:44
kiki
Hallo,
danke für den Tip! Beim ersten Zimmer funktioniert es auch, da werden die Daten richtig eingelesen, aber ab dem zweiten Zimmer nicht. Ich habe unter jedes Zimmer eine Leerzeile eingefügt für Bemerkungen und diese jeweils per Gliederung "ausgeblendet". Kann es damit zu tun haben, dass der SVerweis dann nicht funktioniert?
Gruß,
Kiki
Rätselraten beendet. Beispielmappe?
30.05.2011 12:13:49
Erich
Hi,
nun haben wir - meine ich - genug geraten, was es denn sein könnte.
Ohne eine Beispielmappe mit dem Fehler möchte ich nicht weiter suchen.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Rätselraten beendet. Beispielmappe?
30.05.2011 13:24:46
Rudi
Hallo,
warum befolgst du die Tipps nicht? Das hätte schon lange erledigt sein können.
hier https://www.herber.de/forum/messages/1216628.html hat Erich dir die Lösung aufgezeigt.
Gruß
Rudi
Beispielmappe
30.05.2011 13:31:32
kiki
Hallo,
ich habe die Tips doch befolgt. Ich habe nur statt CDbl CVar genommen, da bei der Zimmernummer nicht immer nur Zahlen stehen, sondern z.T. auch Text (z.B. 123_Gäste). Da funktionierte CDbl nicht.
Anzeige
AW: Beispielmappe
30.05.2011 14:03:29
Rudi
Hallo,
da bei der Zimmernummer nicht immer nur Zahlen stehen

stimmt, hab ich übersehen.
Private Sub cboZimmer_Change()
If cboZimmer.ListIndex = 0 Then
txtVertrag.Value = ""
txtGroesse.Value = ""
Else
If IsNumeric(cboZimmer) Then
txtVertrag = Application.VLookup(CDbl(cboZimmer.Value), Range("A3:B1515"), 2, False)
txtGroesse = Application.VLookup(CDbl(cboZimmer.Value), Range("A3:C1515"), 3, False)
Else
txtVertrag = Application.VLookup(CVar(cboZimmer.Value), Range("A3:B1515"), 2, False)
txtGroesse = Application.VLookup(CVar(cboZimmer.Value), Range("A3:C1515"), 3, False)
End If
End If
End Sub
Gruß
Rudi
Anzeige
Es klappt!!
30.05.2011 14:15:37
kiki
Vielen Dank! Es klappt nun endlich! Was für eine Erleichterung!
Empfehlung (auch wenns schon klappt)
30.05.2011 16:55:53
Erich
Hallo Kiki,
"da bei der Zimmernummer nicht immer nur Zahlen stehen", solltest du keine Zahlen als Zimmernummern verwenden,
sondern einheitlich Texte.
Dann brauchen Programme und Formeln nicht immer zu berücksichtigen, dass in Spalte A der Tabelle ein Mischmasch steht.
In deiner Beispielmappe habe ich mal den Spalten A bis C passende Zahlenformate gegeben.
Alle Zimmernummern sind jetzt Texte (auch die, die wie Zahlen aussehen).
(Du kannst leicht prüfen, ob in Zelle A7 ein Text oder eine Zahl steht: Einfach in eine andere Zelle die Formel
=ISTTEXT(A7) bzw. =ISTZAHL(A7)
schreiben.)
VLookup braucht nun keine Unterscheidung mehr und und kein CDbl oder CVar.
txtVertrag habe ich als Datum formatiert, damit er nicht als 5stellige Zahl angezeigt wird.
Option Explicit ist immer zu empfehlen.
Schau dir die Mappe halt einfach mal an: https://www.herber.de/bbs/user/75086.xls
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Empfehlung (auch wenns schon klappt)
31.05.2011 08:40:37
kiki
Hallo Erich,
vielen Dank nochmal für das Engagement und den zusätzlichen Hinweis. Sehr hilfreich, da es doch die Sache stark vereinfacht. Mit CDbl und CVar ist es doch etwas umständlich und unübersichtlich wenn die Datei größer ist.
Gruß,
Kiki

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige