Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
560to564
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
560to564
560to564
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Textfeld automatisch füllen je nach vorigem Texfel

Textfeld automatisch füllen je nach vorigem Texfel
07.02.2005 09:24:52
Gabi
Liebe Leute,
Heute früh gab es Fehlermeldungen beim Aufruf des Forums, desshalb die Anfrage noch einmal.
Gleich noch eine Frage.
Nachdem ich gestern den ganzen Tag die Suchmaschine gequält habe und die halbe Nacht OHNE Erfolg damit verbracht habe eine Formel einer TextBox "näher zu bringen", hier eine Frage an Euch.
Ich habe in einem Arbeitsplatt 2 Tabellen.
Tabelle 2 "Lieferanten" mit einer Liste von Lieferanten L_Nummer-Name-PLZ-Ort-Tel.-Fax- . . . usf.
PLZ in Spalte F Ort in Spalte G Der gesamte Bereich PLz und Ort hat den Namen "PlzListe"
Tabelle 1 mit:
L_Nummer (in A1) - Firma (in B1) - Name(in C1) - Vorname (in D1) - PLZ (in E1) - Ort (in F1)
als Überschriften.
In F2 habe ich folgende Formel =SVERWEIS(E2;PlzListe;2;FALSCH)
Wenn ich nun in Tabelle 1 bei Bedarf einzelne Spalten ausfülle, wird nach der Eingabe der Postleitzahl in Spalte E *automatisch* der dazugehörige Ort in Spalte F eingetragen :)
Nun mein Problem.
Ich möchte, daß auf ein UserForm übertragen. In Textbox "PLZ" eine Postleitzahl eingegeben soll automatisch in der daneben liegenden TextBox der Ort erscheinen.
Jetzt muss ich beim ausfüllen der PLZ (TextBox6) in der TextBox7 den dazugehörigen Ort per Hand aus einer anderen Datei heraussuchen und eintragen.
Ich bekomme es nicht hin, der TextBox7 im UserForm1 zu sagen:
"Wenn in der Textbox6 ("PLZ") eine Zahl drinsteht, dann schau in Tabelle 2 ("Lieferanten") nach, welcher Ort zu dieser PLZahl gehört und Zeige diesen Wert in der Textbox7 ("Ort") an :( :( :(
Trage danach bei Klick auf "Eintragen" die Inhalte des Userform in die nächste Freie Zeile in Tabelle1 ein.
Wie bekomme ich so einen SVERWEIS wie oben gezeigt in und mit der TextBox7 verwirklicht?
Also, sobald ich in Textbox6 eine PLZ eintrage, soll in Textbox7 automatisch der dazugehörige Ort erscheinen.
Mit freundlichen Grüßen
Gabi
Mein Userform bisher:

Private Sub CommandButton1_Click()
'--- Beginn Buttom ---
z = Range("A1").End(xlDown).Row + 1
If z > 65000 Then z = 2
Cells(z, 1) = TextBox1
Cells(z, 2) = TextBox2
Cells(z, 3) = TextBox3
Cells(z, 4) = TextBox4
Cells(z, 5) = TextBox5
Cells(z, 6) = TextBox6
End Sub

' --- Ende Buttom ---

Private Sub Label2_Click()
End Sub


Private Sub ListBox1_Click()
End Sub


Private Sub TextBox1_Change()
End Sub

' --- Textbox PLZ Beginn ---

Private Sub TextBox5_Change()
End Sub

' --- Textbox PLZ Ende ---
' --- Textbox Ort Beginn hier soll laut PLZ der Ort ausgelesen werden ---

Private Sub TextBox6_Change()
End Sub

' --- Textbox Ort Ende ---

Private Sub UserForm_Click()
End Sub

AW: Textfeld automatisch füllen je nach vorigem Texfel
RR
Hallo,
ami sollte es gehen:

Private Sub TextBox6_Exit(ByVal Cancel As MSForms.ReturnBoolean)
PLZ = TextBox6.Value * 1
For Each zelle In Worksheets("tabelle 2").Range("F:F")
If zelle.Value = PLZ Then
UserForm1.TextBox7.Value = Worksheets("tabelle 2").Cells(zelle.Row, 7).Value
Exit Sub
End If
Next
End Sub

Gruß
RR
AW: Textfeld automatisch füllen je nach vorigem Te
Gabi
Hallo RR,
DANKE!!!
Ich fasse es nicht. ES funktioniert!
Das es so kompliziert ist! Bei der Arbeit mit ein bis zwei Tabellenblättern reicht eine verhältnismäßig einfache, auch für den Laien einigermaßen verständliche Formel aus, etwas Arbeit dem Computer zu überlassen.
Kommt dann eine UserForm hinzu, wird es so verdammt kompliziert!
Vielen Dank für die Hilfe!
Liebe Grüße
Gabi
Anzeige
...es geht natürlich auch einfacher...
RR
...ich war vorhin nur zu faul zum nachdenken;-)

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
on error exit sub
PLZ = TextBox1.Value * 1
TextBox2.Value = Application.WorksheetFunction.VLookup(PLZ, Worksheets("t2").Range("F:G"), 2, 0)
End Sub

Das VLookup entspricht dabei dem Sverweis.
Gruß
RR
AW: ...es geht natürlich auch einfacher...
Gabi
Hallo RR,
Deine Erläuterungen zum 2. Beispiel sind ja nun etwas besser wahrnehmbar und besser einzusehen :)
Zunächst noch einmal vielen Dank für Deine Beispiele. Das Erste funktioniert hervorragend.
Nun möchte ich diese Abfrage in mein erstes schon gebautes UserForms übernehmen. Mehrwert schaffen :)
Der Hacken, ich habe ein Userform (Danke Sepp!) in der die PLZ in TextBox8 auf Gültigkeit geprüft wird
Nun soll Deine "Formel" :
[Zitat]
TextBox2.Value = Application.WorksheetFunction.VLookup(PLZ, Worksheets("t2").Range("F:G"), 2, 0)
---> Das VLookup entspricht dabei dem Sverweis.
[/Zitat]
auch noch in diese Abfrage hinein.
' --- In TextBox 8 muss eine "richtige" (6-stellige) PLZ eingetragen werden, bevor das Feld verlassen wird

Private Sub TextBox8_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim Wert As Variant
If putData Then Exit Sub      'Wenn Prüfvariable auf Wahr, dann Sub verlassen
Wert = TextBox8.Value
If Not (Wert >= 1000 And Wert <= 99999 And Len(Wert) >= 4 And Len(Wert) <= 5) Then
MsgBox "Fehlerhafte Eingabe! Bitte PLZ eingeben, Danke!", vbInformation
TextBox8.SetFocus
TextBox8.SelStart = 0
TextBox8.SelLength = Len(TextBox8.Value)
Cancel = True
Else
TextBox8.Value = Format(Int(Wert), "00000")
End If
End Sub


# Ende dieser funktionierenden TextBox8

Wie bekomme ich nun Deine "Formel" (---> s.u.) in die Abfrage hinein ?
Egal wo hin ich diese 5 Zeilen setze, immer bekomme ich falsche Werte bzw. Error Meldungen von Excel an den Kopf geworfen :( :(


' --- beim Verlassen des Feldes 8 (PLZ) wird in der naechsten Textbox 9 (Ort) automatisch
' --- aus Tabelle_1 aus *Spalte B* der Ort übernommen.
' --- PLZ steht in Tabelle_1 in Spalte A

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
on error exit sub
PLZ = TextBox1.Value * 1
---> ---> TextBox2.Value = Application.WorksheetFunction.VLookup(PLZ, Worksheets("Tabelle_1").Range("A:B"), 2, 0)
End Sub

An welche Stelle setzte ich diese "Formel" in die obige funktionierende Abfrage der TextBox8?
Liebe Grüße Gabi
Anzeige
eine erste Lösung
Gabi
Hallo RR,
ich habe es hinbekommen !! :) :)
Allerdings weiß ich nicht ob das wirklich so vollkommen richtig ist. Vor allem Deine Zeilen mit der "Formel im Textfeld". Bist Du bitte so nett und schaust noch einmal darüber.
Aus der Tabelle 1 -> Spalte A = PLZ, Spalte B = Ort kommen die Werte in das UserForm
In Tabelle "Lieferanten" schreibt das UserForm die PLZ in die Spalte H und der Ort in die Spalte I
Hier die TextBox8 für die PLZ, TextBox9 soll automatisch den Ort aus Tabelle 1 Spalte C bekommen.
' --- es muss eine "richtige" (6 stellige) PLZ eingetragen werden, in Textfeld 8 bevor das Feld verlassen wird
' --- wird ja per Hand in das Userform eingetragen

Private Sub TextBox8_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim Wert As Variant
If putData Then Exit Sub      'Wenn Prfvariable auf Wahr, dann Sub verlassen
Wert = TextBox8.Value
If Not (Wert >= 1000 And Wert <= 99999 And Len(Wert) >= 4 And Len(Wert) <= 5) Then
MsgBox "Fehlerhafte Eingabe! Bitte PLZ eingeben, Danke!", vbInformation
TextBox8.SetFocus
TextBox8.SelStart = 0
TextBox8.SelLength = Len(TextBox8.Value)
Cancel = True
Else
TextBox8.Value = Format(Int(Wert), "00000")
' --- danach soll automatisch in der TextBox9 der Ort erscheinen.
' --- Quelle dafr ist Tabelle 1 (Spalte A PLZ, Spalte B Ort)
End If
Dim PLZ As Long
PLZ = TextBox8.Value * 1
TextBox9.Value = Application.WorksheetFunction.VLookup(PLZ, Worksheets("Tabelle 1").Range("A:B"), 2, 0)
End Sub

Mit freundlichen Grüßen
Gabi
Anzeige
AW: eine erste Lösung
RR
Hallo,
da ich gestern nicht mehr im Büro war, hier jetzt der angepasste Code für den Sverweis. Du kannst Ihn so unter deinem eigenen einfügen. In deinem Code kannst du ab -> Dim PLZ... bis ..., 2, 0)

Private Sub TextBox8_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error GoTo Fehler
PLZ = TextBox8.Value * 1
TextBox9.Value = Application.WorksheetFunction.VLookup(PLZ, Worksheets("Tabelle 1").Range("A:B"), 2, 0)
Exit Sub
Fehler:
MsgBox "PLZ nicht gefunden, bitte prüfen Sie Ihre Eingabe!", vbInformation
TextBox8.SetFocus
TextBox8.SelStart = 0
TextBox8.SelLength = Len(TextBox1.Value)
Cancel = True
End Sub

Gruß
RR
Anzeige
AW: eine erste Lösung - funktionier so nicht richt
Hallo
Hallo RR,
zunächst einmal herzlichen Dank für Deine Bemühungen.
Deine obige Lösung bringt "Fehler beim Kompilieren Variable nicht definiert"
Der zeigt auf Deine erste Zeile:

Private Sub TextBox8_Exit(ByVal Cancel As MSForms.ReturnBoolean)
und markiert ---> PLZ = TextBox8.Value * 1
Meine alte Variante von oben noch einmal zur Übersicht:

Private Sub TextBox8_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim Wert As Variant
If putData Then Exit Sub      'Wenn Prüfvariable auf Wahr, dann Sub verlassen
Wert = TextBox8.Value
If Not (Wert >= 1000 And Wert <= 99999 And Len(Wert) >= 4 And Len(Wert) <= 5) Then
MsgBox "Fehlerhafte Eingabe! Bitte PLZ eingeben, Danke!", vbInformation
TextBox8.SetFocus
TextBox8.SelStart = 0
TextBox8.SelLength = Len(TextBox8.Value)
Cancel = True
Else
TextBox8.Value = Format(Int(Wert), "00000")
End If
Dim PLZ As Long
PLZ = TextBox8.Value * 1
TextBox9.Value = Application.WorksheetFunction.VLookup(PLZ, Worksheets("Tabelle 1").Range("A:B"), 2, 0)
End Sub

################
Nun habe ich :
[Zitat]
der angepasste Code für den Sverweis. Du kannst Ihn so unter deinem eigenen einfügen. In deinem Code kannst du ab -> Dim PLZ... bis ..., 2, 0) [/Zitat]
Deinen Code an die hoffentlich richtige Stelle eingesetzt.
Egal ob ich den vor das "End Sub
" dort wo ich Dim PLZ . . . bis 2,0) gelöscht habe oder hinter das darauf folgende "End Sub " es kommt immer die Fehlermeldung "Fehler beim Kompilieren Variable nicht definiert":
################

Private Sub TextBox8_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim Wert As Variant
If putData Then Exit Sub      'Wenn Pruefvariable auf Wahr, dann Sub verlassen
Wert = TextBox8.Value
If Not (Wert >= 1000 And Wert <= 99999 And Len(Wert) >= 4 And Len(Wert) <= 5) Then
MsgBox "Fehlerhafte Eingabe! Bitte PLZ eingeben, Danke!", vbInformation
TextBox8.SetFocus
TextBox8.SelStart = 0
TextBox8.SelLength = Len(TextBox8.Value)
Cancel = True
Else
TextBox8.Value = Format(Int(Wert), "00000")
End If
' --->hier  Dim PLZ... bis ..., 2, 0) <- geloescht
End Sub

' ---> der erweiterte Code fur diese TextBox8 um in der naechsten den Ort einzulesen:

Private Sub TextBox8_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error GoTo Fehler
PLZ = TextBox8.Value * 1
TextBox9.Value = Application.WorksheetFunction.VLookup(PLZ, Worksheets("Tabelle 1").Range("A:B"), 2, 0)
Exit Sub
' --- Fehler:
MsgBox "PLZ nicht gefunden, bitte pruefen Sie Ihre Eingabe!", vbInformation
TextBox8.SetFocus
TextBox8.SelStart = 0
TextBox8.SelLength = Len(TextBox1.Value)
Cancel = True
End Sub

################
Nach der Fehlermeldung und Beenden des Debug mag Excel seinen Dienst nicht mehr versehen. Nur über [Stg]+[Alt]+[Entf] ist Excel dazu zu bewegen, seinen unterbrochenen Dienst aufzugeben.
Mit freundlichen Grüßen
Gabi
Anzeige
AW: eine erste Lösung - funktionier so nicht richt
RR
Hallo,
bevor wir hier lange rumrätseln, habe ich mal ein Beispiel hochgeladen. Da funktioniert es. Du müsstest nur die Nummern der Textboxen und den Tabellennamen anpassen.
https://www.herber.de/bbs/user/17614.xls
Gruß
RR
AW: eine erste Lösung - funktionier so nicht richt
Gabi
Hallo RR,
entschuldige die späte Rückmeldung. Ich war auswärtig unterwegs. Desshalb erst meine späte Antwort.
Dein Blatt und Userform funktionieren tatellos.
Nun möchte ich diese Funktion in meine vorhandene UserForm einbauen.
Dazu habe ich die entsprechenden Werte und Angaben geändert.
Das Userform lässt sich zunächst auch fehlerfrei aufrufen.
Wenn ich jedoch aus Textbox9 heraus gehe, erhalte ich die Meldung "Variable nicht definiert".
Irgendwo wird da vorher schon etwas "durcheinander" gebracht.
Ich sehe da im Moment überhaupt nicht mehr durch.
https://www.herber.de/bbs/user/17787.xls
Mit freundlichen Grüßen
Gabi
Anzeige

18 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige