Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Art Sverweis in Textboxen einer Userform

Art Sverweis in Textboxen einer Userform
Kay
Hallo,
dachte ich hätte schon mal gefragt, konnte es aber nicht im Archiv finden...daher jetzt erneut/oder erstmalig ;o)
Habe eine Userform mit Textbox 1 = PLZ und Textbox2 = Ort sowie eine Tabelle wo alle PLZ mit Ort hinterlegt sind (Spalte A & B). Nun gibt halt der User in Textbox 1 eine PLZ ein - so soll in Textbox 2 der Ort zugeordnet werden (Art Sverweis)...aber wie geht das ? Meine VBA-Kenntnisse reichen da noch nicht so aus...
Gruß und Danke !
Kay
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Art Sverweis in Textboxen einer Userform
19.07.2009 22:51:43
Josef
Hallo Kay,
vom Prinzip her, geht das so.
Private Sub TextBox1_Change()
  Dim varRes As Variant
  
  varRes = Application.Match(TextBox1, Sheets("Tabelle2").Range("A2:A1000"), 0)
  
  If IsNumeric(varRes) Then
    TextBox2 = Application.Index(Sheets("Tabelle2").Range("B2:B1000"), varRes)
  Else
    TextBox2 = ""
  End If
End Sub

Gruß Sepp

Anzeige
AW: Art Sverweis in Textboxen einer Userform
19.07.2009 23:30:21
Andre´
Hallo Sepp,
habe es auch probiert
bei mir wird im Lokalfenster:
: varRes : Fehler 2042 : Variant/Error
angezeigt.
Was muss geändert werden.
Vielen Dank im Voraus!
MFG Andre
PLZ-Match mit Text oder Zahl?
20.07.2009 00:02:46
Erich
Hi zusammen,
vermutlich sind die PLZ in der Tabelle als Zahlen gespeichert, oder?
Dann wird keine PLZ gefunden, die in der Textbox (natürlich) als Text eingegeben wurde.
Application.Match(CDbl(TextBox1), ...
statt
Application.Match(TextBox1,
könnte schon helfen.
Mein Code-Vorschlag (mit AfterUpdate statt Change, aber das ist Geschmackssache...):

Private Sub TextBox1_AfterUpdate()
Dim varRes As Variant
If IsNumeric(TextBox1) Then
With Sheets("Tabelle2")
varRes = Application.Match(CDbl(TextBox1), .Range("A2:A1000"), 0)
If IsNumeric(varRes) Then
TextBox2 = Application.Index(.Range("B2:B1000"), varRes)
Else
TextBox2 = "PLZ '" & TextBox1 & "' nicht gefunden"
End If
End With
Else
TextBox2 = "Falsche Eingabe"
End If
End Sub
Besser wäre es aber vermutlich, die PLZ als Texte in der Tabelle zu speichern.
(siehe bei Wikipedia: http://de.wikipedia.org/wiki/Postleitzahl#Postleitzahlen_in_der_Datenverarbeitung )
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: PLZ-Match mit Text oder Zahl?
20.07.2009 00:27:18
Andre´
Hallo Erich,
hatte schon Textformat, allerdings hatte ich keine führende Null vergeben.
Jetzt funktioniert es, auch Dein Vorschlag.
Vielen Dank!
MFG Andre
AW: PLZ-Match mit Text oder Zahl?
20.07.2009 13:40:24
k
Hi, habe den Code ausprobiert - passt super ! Vielen Dank - damit wird meine Userform immer einfacher von der Bedienung und die ADMs haben bald richtig Spass mit Excel ;o)
Gruß
Kay
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Art Sverweis in Textboxen einer Userform


Schritt-für-Schritt-Anleitung

  1. Erstelle die Userform:

    • Öffne den VBA-Editor in Excel (ALT + F11).
    • Füge eine neue Userform hinzu und platziere zwei Textboxen (TextBox1 für die PLZ und TextBox2 für den Ort).
  2. Füge den Code hinzu:

    • Klicke mit der rechten Maustaste auf die Userform und wähle "Code anzeigen".
    • Gib den folgenden Code in das Codefenster ein:
    Private Sub TextBox1_Change()
       Dim varRes As Variant
       varRes = Application.Match(TextBox1, Sheets("Tabelle2").Range("A2:A1000"), 0)
       If IsNumeric(varRes) Then
           TextBox2 = Application.Index(Sheets("Tabelle2").Range("B2:B1000"), varRes)
       Else
           TextBox2 = ""
       End If
    End Sub
  3. Testen der Userform:

    • Schließe den VBA-Editor und starte die Userform.
    • Gib eine PLZ in TextBox1 ein und sieh, wie automatisch der zugehörige Ort in TextBox2 ausgefüllt wird.

Häufige Fehler und Lösungen

  • Fehler 2042: Wenn du im Lokalfenster "varRes : Fehler 2042 : Variant/Error" siehst, könnte das daran liegen, dass die PLZ in der Tabelle als Zahl gespeichert ist. Überprüfe, ob die PLZ in TextBox1 als Text eingegeben wurde.

  • Falsche Eingabe: Wenn die PLZ nicht gefunden wird, stelle sicher, dass die PLZ in der Excel-Tabelle korrekt eingetragen sind und dass führende Nullen nicht verloren gehen. Eine Umwandlung in Text kann helfen.


Alternative Methoden

  • Verwendung von AfterUpdate statt Change: Du kannst den Code anpassen, um die AfterUpdate-Ereignisprozedur zu verwenden, die besser geeignet sein kann, um die Eingabe zu verarbeiten. Das könnte so aussehen:

    Private Sub TextBox1_AfterUpdate()
       Dim varRes As Variant
       If IsNumeric(TextBox1) Then
           With Sheets("Tabelle2")
               varRes = Application.Match(CDbl(TextBox1), .Range("A2:A1000"), 0)
               If IsNumeric(varRes) Then
                   TextBox2 = Application.Index(.Range("B2:B1000"), varRes)
               Else
                   TextBox2 = "PLZ '" & TextBox1 & "' nicht gefunden"
               End If
           End With
       Else
           TextBox2 = "Falsche Eingabe"
       End If
    End Sub

Praktische Beispiele

  • Beispiel für PLZ 10115: Wenn du 10115 in TextBox1 eingibst und die Tabelle die richtige Zuordnung hat (z.B. Berlin), wird TextBox2 automatisch mit "Berlin" gefüllt.

  • Benutzerfeedback: Du kannst auch eine Rückmeldung an den Benutzer geben, falls die PLZ nicht gefunden wird, indem du eine entsprechende Nachricht in TextBox2 anzeigst.


Tipps für Profis

  • Dateneingabe optimieren: Stelle sicher, dass die PLZ in der Tabelle als Text formatiert sind, um das Risiko von falschen Zuordnungen zu minimieren.

  • Fehlermeldungen verbessern: Implementiere detailliertere Fehlermeldungen, um den Benutzern zu helfen, die Eingaben zu korrigieren.

  • Datenvalidierung: Nutze die Datenvalidierung in Excel, um sicherzustellen, dass nur gültige PLZ eingegeben werden.


FAQ: Häufige Fragen

1. Warum funktioniert der Sverweis nicht? Der Sverweis könnte nicht funktionieren, wenn die PLZ in der Tabelle als Zahlen gespeichert sind und in der Textbox als Text eingegeben werden. Verwende CDbl() zur Umwandlung.

2. Was kann ich tun, wenn die PLZ nicht gefunden wird? Überprüfe die Eingabe auf korrekte Schreibweise und formatiere die PLZ in der Tabelle als Text, um sicherzustellen, dass führende Nullen nicht verloren gehen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige