Listboxinhalt mit Inhalt Tabelle vergleichen
Hallo zusammen,
irgendwie sitz ich momentan auf dem Schlauch...
Ich habe folgendes Problem:
ich habe zwei Tabellenblätter. Auf dem einen befindet sich eine Listbox (Länder), auf dem anderen eine einfache Auflistung einzelner Daten zu diesen Ländern (Arbeitstage, Arbeitszeit, Lohn etc...).
Ich möchte nun, daß wenn ich z.B. in der Listbox "Deutschland" anwähle, daß auch auf diesem Sheet die Daten von Deutschland angezeigt werden.
Also muß der Inhalt der Listbox mit dem Inhalt der zweiten Tabelle verglichen werden, die zugehörigen Daten ausgelesen und auf die erste tabelle übertragen werden.
Wär echt super, wenn Ihr mir weiterhelft, hab das vor Jahren mal gemacht, aber alles vergessen *schäm*
Danke Schön!
Cathérine
Antwort schreiben
Antwort 1 von coros vom 15.03.2019, 12:34 Options
Hallo Cathérine,
um Die helfen zu können, müsste man etwas mehr über Deine Datei wissen.
Wichtigste Frage ist, hast Du wirklich eine Listbox genommen oder hast Du eventuell ein Gültigkeitsfeld?
Wenn Du eine Listbox genommen hast, aus welcher Symbolleiste (Symbolleiste Formular oder Steuerelement-Toolbox) stammt die Listbox?
In welcher Spalte stehen bei Dir Länder in dem 2. Tabellenblatt, also in dem die Daten herausgefunden werden sollen?
Aus welchen Zellen/Spalten sollen nach dem Finden von Übereinstimmungen aus dem 2. Tabellenblatt in Deinem ersten Tabellenblatt übertragen werden?
Eventuell kannst Du ja mal eine kleine Beispieldatei bei
www.netupload.de hochladen und den Link dann hier posten, dann sieht man etwas mehr von Deiner Datei und dann kann man Dir bestimmt besser helfen. Allerdings ohne die Antworten zu meinen Fragen, kann man nur eine allgemeine Antwort geben, mit der Dir sicherlich nicht geholfen ist.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 2 von Catze81 vom 16.03.2019, 10:10 Options
Hallo Oliver,
also erstens: die Listbox hab ich mit dem Befehl "Listenfeld" (Steuerelemente-Leiste) direkt auf dem Excel-Sheet gemacht.
Aufbau "Datenbank" (das Sheet aus dem entnommen wird):
Spalte A: Länder --> Soll in Textbox1 der "Anzeige" (zweites Sheet) angezeigt werden
Spalte B: Arbeitstage --> soll in Textbox2 der "Anzeige" angezeigt werden
Spalte C: Arbeitsstunden --> soll in Textbox 3 der "Anzeige" angezeigt werden
Aufbau "Anzeige":
Listbox mit Ländern
Textbox1 - 3
So, nun möchte ich in der "Anzeige" mit der Listbox ein Land auswählen und die dazugehörigen Daten aus der "Datenbank" anzeigen.
Hoff, Du hast mein Problem jetzt etwas genauer verstanden.
Vielen Dank schon mal!
Antwort 3 von Catze81 vom 16.03.2019, 10:12 Options
Ach ja, die Länder hats mir schon in die Listbox übernommen, ich brauch also wirklich nur noch den Code um die Daten in den Textboxen anzuzeigen!
Danke
Antwort 4 von coros vom 16.03.2019, 12:00 Options
Hallo Cathérine,
dann sollte der Code in etwas wie folgender Code aussehen. Kopiere den Code in das VBA-Projekt des Tabellenblattes, in dem sich Deine List- und TextBoxen befinden.
[b]Option Explicit
Private Sub ListBox1_Click()
Rem: variable deklarieren
Dim i As Integer
Rem: Bildschirmaktualisierung ausschalten
Application.ScreenUpdating = False
Rem: Schleife zum Finden des ausgewählten Begriffs aus Listbox1
Rem: Anzahl der Durchläufe richtet sich nach den Zellen, die in
Rem: Blatt "Tabelle2" Spalte A beschrieben sind
For i = 1 To Sheets("Tabelle2").Range("A65536").End(xlUp).Row
Rem: Wenn der ausgewählte Wert aus Listbox 1 gleich dem Wert
Rem: in Blatt "Tabelle2" in Spalte A in der Zeile, die gerade
Rem: durch die Schleife abgefragt wird, dann...
If ListBox1.Text = Sheets("Tabelle2").Cells(i, 1) Then
Rem: ...in TextBox1 den Wert aus Spalte A eintragen
TextBox1.Text = Sheets("Tabelle2").Cells(i, 1)
Rem: ...in TextBox2 den Wert aus Spalte B eintragen
TextBox2.Text = Sheets("Tabelle2").Cells(i, 2)
Rem: ...in TextBox3 den Wert aus Spalte C eintragen
TextBox3.Text = Sheets("Tabelle2").Cells(i, 3)
Rem: Schleife verlassen
Exit For
Rem: Abfrage Ende
End If
Rem: Nächsten Schleifendurchlauf starten
Next
End Sub[/b]
Mit dem Code wird der ausgewählte Wert in Listbox1 mit den Werten in Blatt "Tabelle2" Spalte A verglichen. Bei Übereinstimmung werden die Werte aus Spalte A, B und C in die TextFelder übertragen.
Eventuell musst Du den Blattnamen noch anpassen.
Ich hoffe, Du meintest das so. Bei Fragen melde Dich bitte.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf
meiner HP in der
Rubrik Anleitungen und dort dann in der
Anleitungsnummer 2 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 5 von Catze81 vom 19.03.2019, 10:29 Options
Hallo Oliver,
schonmal vielen Dank für Deine Hilfe...
Aber irgendwie tuts nicht *heul*
Hab mir den Code angeschaut und hab ihn wie folgt angepasst:
Listbox füllenPrivate Sub ListBox_Land_Click()
Listbox_Land.ListFillRange = "Daten_Arbeitszeiten!A1:A" & Worksheets("Daten_Arbeitszeiten").Range("A1").End(xlDown).Row
End Sub
Listbox auslesen, vergleichen etcPrivate Sub CommandButton1_Click()
Dim i As Integer
'Schleife zum Finden des ausgewählten Begriffs aus Listbox_Land
'Anzahl der Durchläufe richtet sich nach den Zellen, die in
'Blatt "Daten_Arbeitszeiten" Spalte A beschrieben sind
For i = 1 To Sheets("Daten_Arbeitszeiten").Range("A65536").End(xlUp).Row
'Wenn der ausgewählte Wert aus Listbox_Land gleich dem Wert
'in Blatt "Daten_Arbeitszeiten" in Spalte A in der Zeile, die gerade
'durch die Schleife abgefragt wird, dann...
If Listbox_Land.Text = Sheets("Daten_Arbeitszeiten").Cells(i, 1) Then
'in TextBox5 den Wert aus Spalte B eintragen
TextBox5.Text = Sheets("Daten_Arbeitszeiten").Cells(i, 2)
'...in TextBox6 den Wert aus Spalte C eintragen
TextBox6.Text = Sheets("Daten_Arbeitszeiten").Cells(i, 3)
'...in TextBox7 den Wert aus Spalte E eintragen
TextBox7.Text = Sheets("Daten_Arbietszeiten").Cells(i, 5)
'...in TextBox8 den Wert aus Spalte F eintragen
TextBox8.Text = Sheets("Daten_Arbeitszeiten").Cells(i, 6)
'...in TextBox9 den Wert aus Spalte G eintragen
TextBox9.Text = Sheets("Daten_Arbeitszeiten").Cells(i, 7)
'...in TextBox1 den Wert aus Spalte H eintragen
TextBox1.Text = Sheets("Daten_Arbeitszeiten").Cells(i, 8)
'Schleife verlassen
Exit For
'Abfrage Ende
End If
'Nächsten Schleifendurchlauf starten
Next
End Sub
Find leider keinen Fehler und versteh auch net, warum er nicht in die TextBoxen schreibt...
Hoff Du kannst mir weiter helfen!
Grüße Cathérine
Antwort 6 von Catze81 vom 19.03.2019, 12:51 Options
Hallo Oliver,
habs zwar noch mal alles abtippen müssen (Das Kopierte lief gar nicht...) aber es klappt bestens!
Also, vielen, vielen Dank *jubel*