Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1788to1792
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
Sverweis in VBA Userform
06.11.2020 16:17:30
Excelaner
Hi liebes Forum,
habe ein Userform erstellt, das eigentlich korrekt funktioniert.
Man kann entweder eine Mitglieds Nr. (txtMitglied) eintragen oder bei Nichtmitgliedern trägt man den Namen (txtName) und Vornamen (txtVorname) ein.
Jetzt möchte ich, dass wenn man eine Mitglieds Nr. einträgt, in den Textboxen txtName und txtVorname über SVerweis die korrekten Daten automatisch angezeigt werden, damit man gleich sieht, ob man die richtige Nummer eingetragen hat, und nicht erst nachdem speichern. Die Daten für die Mitglieder sind im Worksheet "Mitglieder" gespeichert.
Dafür habe ich folgendes geschrieben:

Private Sub txtMitglied_AfterUpdate()
Me.txtName.Value = WorksheetFunction.VLookup(Me.txtMitglied.Value, Worksheets("Mitglieder"). _
Range("A2:C2300"), 3, False)
End Sub

Folgender Fehler kommt dann:
Laufzeitfehler '1004':
Die VLookup-Eigentschaft des WorksheeFunction-Objektes kann nicht zugeordnet werden.
Was mache ich falsch?
Danke euch für eure Hilfe!

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sverweis in VBA Userform
06.11.2020 16:25:43
Daniel
HI
eine mögliche Fehlerursachen wäre, dass der text aus der Spalte txtMitglied nicht in der Spalte A des Worksheets vorhanden ist.
das kann daran liegen, dass in TextBoxen immer Text steht und die Mitgliedsnummer in der Liste als Zahl eingetragen ist. Das ist für den SVerweis/LookUp ein unterschied.
ggf probiers mal so, das Cstr mit Application.VLookUP vermeidet den Abbruch des codes, das VAL wandelt den Text in eine Zahl, so dass der VLoopUp suchen kann:
Me.txtName.Value = CStr(Application.VLookup(Val(Me.txtMitglied.Value), Worksheets("Mitglieder"). _
Range("A2:C2300"), 3, False))
Gruß Daniel
Anzeige
AW: Sverweis in VBA Userform
06.11.2020 16:49:06
Excelaner
vielen lieben Dank! Das hat funktionier!! Danke dir!!
Gibt es jetzt irgendwie die Möglichkeit, dass wenn man eine MitgliedsNr einträgt und der Nachname hat sich z.B. geändert und ich überschreibe dieses Feld (txtName) manuell, dass diese dann in der Mitgliederliste auch automatisch korrigiert wird?
AW: Sverweis in VBA Userform
06.11.2020 17:03:03
Daniel
Hi
dazu müsstest du die Zeilennummer der Fundstelle mit .FiND oder Application.Match (entspricht VERGLEICH) und dann nicht den Namen in die TextBox schreiben, sondern die TextBox mit Zelle in der gefundenen Zeile verknüpfen, die den Namen enthält.
das Verknüpfen macht man, in dem man die Zelladresse der Zelle in die Eigenschaft ControlSource einträgt (am besten mit Tabellenblatt davor in der Form: 'Tabelle1!A1')
dann sind TextBox und Zelle verbunden, dh der Zellinhalt wird in der TextBox angezeigt und jede Änderung wird aus der Box in die Zelle übertragen sobald du die Box verlässt.
Programmieren musst du dann nichts.
Gruß Daniel
Anzeige
AW: Sverweis in VBA Userform
06.11.2020 17:25:08
Excelaner
Oookay krass :)
Hast du mir hierfür vielleicht den Code, wie es aussehen müsste? Bin dann doch nicht so weit, leider :(
AW: Sverweis in VBA Userform
06.11.2020 17:57:22
Daniel
HI
in etwa so (bitte nicht kopieren sondern lesen, verstehen, selber schreiben):
dim x as variant
x = Application.Match(val(textboxMitglied), Sheets("TabelleX").Range("A:A"), 0)
if vartype(x)  vberror then
TextboxName.ControlSource = "'TabelleX'!B" & x
else
TextboxName.ControlSource = ""
end if
Gruß Daniel
AW: Sverweis in VBA Userform
08.11.2020 07:36:44
Excelaner
Hi Daniel,
komisch, mein letzter Eintrag wurde nicht veröffentlicht. Der Code funktioniert perfekt, VIELEN DANK!!!!
Hab aber ein Problem mit dem leeren des Boxes. Normalerweise leere ich die Eingabefelder nach dem Speichern mit
Me.txtName.Value = ""
wenn ich das jedoch hier mache, dann löscht es den Eintrag "Name" in dem Sheet Mitglieder, was ja logisch ist, da wir die Verknüpfung geschaffen haben. Das heißt, nach dem Speichern ist der Name der vorherigen MitgliederNr so lange drin, bis ich eine neue Nr. eingetragen habe.
Ist zwar jetzt kein Weltuntergang, aber auch nicht wirklich schön. Gibt es dafür auch eine Lösung, ich habs leider nicht hinbekommen. Also mir gehts nur darum, dass nach dem Speichern alle Textboxen wieder geleert werden.
Und noch was, manchmal nutze ich meinen Surface im Touchmodus, ich krieg es zwar hin, dass sich die uralte Bildschirmtastatur :) von Microsoft öffnet sobald ich auf ein Textbox klicke, aber nicht die Surface Touchtastatur, die sich auch sonst immer öffnet, wenn man etwas eingeben möchte.
Gibt es dafür auch Abhilfe?
Danke dir im Voraus :)
Anzeige
AW: Sverweis in VBA Userform
08.11.2020 11:40:54
Daniel
Hi
Lösche im gezeigten Code nicht nur due Verbindung zur Zelle, sondern danach auch den Inhalt der Textbox.
Lösche beim Leeren zuerst due Box mit der Mitgliedsnummer.
Gruß Daniel
AW: Sverweis in VBA Userform
11.11.2020 23:48:28
Excelaner
Danke Daniel für deine Hilfe!
AW: Sverweis in VBA Userform
12.11.2020 05:31:25
Hajo_Zi
offen bedeutet es soll noch eine Antwort kommen.
Warum ist dein Beitrag Offen.
Du willst doch was machen. Soll jemand vorbei kommen?
Das ist nur meine Meinung zu dem Thema.

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige