Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1752to1756
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

Listboxauswahl gegen Tabelle prüfen

Listboxauswahl gegen Tabelle prüfen
20.04.2020 11:29:59
Tim
Hallo zusammen,
ich habe auf einer Userform eine Listbox die ich mit den Einträgen aus einer Textbox befülle. Die Werte, die in der Listbox sind sollen via CommandButton gegen die Werte in der Tabelle (Spalte A) geprüft werden. Werden die Werte aus der ListBox in der Tabelle gefunden, so soll ein Wert in die Spalte B eingetragen werden.
Problem besteht jetzt darin, dass nur ein Wert geprüft wird und nicht alle, wer kann mir dabei helfen!?
https://www.herber.de/bbs/user/136882.xlsm
Private Sub CommandButton2_Click()
Dim i As Integer, lngListcount1 As Long
For i = 2 To Sheets("Tabelle1").Range("A65536").End(xlUp).Row
For lngListcount1 = 0 To UserForm1.ListBox1.ListCount - 1
If CLng(UserForm1.ListBox1.List(UserForm1.ListBox1.ListIndex, 0)) = CLng(Sheets("Tabelle1"). _
Cells(i, 1)) Then
Sheets("Tabelle1").Cells(i, 2) = "Test"
Else
Sheets("Tabelle1").Cells(i, 2) = "nope"
End If
Next
Next
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listboxauswahl gegen Tabelle prüfen
20.04.2020 12:52:54
Daniel
Hi
dein Fehler ist, dass du für die Prüfung im IF immer nur den vom Anwender ausgewählten Listboxeintrag und damit immer den gleichen verwendest:
ListBox1.List(UserForm1.ListBox1.ListIndex, 0)
du müsstest hier natürlich den Listboxeintrag nehmen, der dem Schleifenzähler entspricht.
ListBox1.List(lngListcount1, 0)
gruß Daniel
AW: Listboxauswahl gegen Tabelle prüfen
20.04.2020 14:28:09
Tim
Hallo Daniel,
vielen Dank für deine Antwort, die Anpassung habe ich gemacht jedoch nimmt er weiterhin nur den ersten Eintrag und nicht alle in der Listbox.
Private Sub CommandButton2_Click()
Dim i As Integer, lngListcount1 As Long
For i = 2 To Sheets("Tabelle1").Range("A65536").End(xlUp).Row
For lngListcount1 = 0 To UserForm1.ListBox1.ListCount - 1
If CLng(UserForm1.ListBox1.List(lngListcount1, 0)) = CLng(Sheets("Tabelle1").Cells(i, 1)) Then
Sheets("Tabelle1").Cells(i, 2) = "Test"
Else
Sheets("Tabelle1").Cells(i, 2) = "nope"
End If
Next
Next
End Sub

Anzeige
AW: Listboxauswahl gegen Tabelle prüfen
20.04.2020 14:54:59
Daniel
Hi
als allererstes solltest du lernen, Codeverhalten genauer zu beobachten und korrekter zu beschreiben.
es wird nämlich nicht der erste Eintrag der Liste verwendet, sondern der letzte!
und das ist immer schon ein Hinweis für die Problemursache:
folgendes:
wenn in einer Zelle der erste Listboxeintrag zutrifft, dann wird "Test" eingetragen.
die Schleife läuft jetzt aber weiter und vergleicht auch die nächsten Listboxinhalte mit der Zelle.
das Ergebnis ist natürlich "nope" und wird in die nachbarzelle geschrieben und überschreibt ein eventuell bereits enthaltenes "Test".
Somit ist natürlich klar, dass immer nur das "Test" des letzten Schleifendurchlaufs stehen bleibt, alle anderen werden überschrieben.
die Abhilfe wäre, dass du die innere Schleife über die Listbox abbrichst, sobald du einen Treffer hast.
dazu gibt es den Befehl: Exit For
welchen du im Falle eines Treffers zusätzlich ausführen müsstest.
allerdings sollte man die Anzahl der schreibenden Zellzugriffe reduzieren.
du könntest auch das "nope" zu beginn in alle Zellen gleichzeitig schreiben, um dann nur das Test bei Treffer einzeln einzutragen.
Private Sub CommandButton2_Click()
Dim i As Long, lngListcount1 As Long
Dim L As Long
L = Sheets("Tabelle1").Range("A65536").End(xlUp).Row
Sheets("Tabelle1").Range("B2:B" & L).Value = "nope"
For i = 2 To L
For lngListcount1 = 0 To UserForm1.ListBox1.ListCount - 1
If CLng(UserForm1.ListBox1.List(lngListcount1, 0)) = CLng(Sheets("Tabelle1").Cells(i, 1) _
) Then
Sheets("Tabelle1").Cells(i, 2) = "Test"
Exit For
End If
Next
Next
End Sub
gruß Daniel
Anzeige
AW: Listboxauswahl gegen Tabelle prüfen
20.04.2020 15:29:26
Tim
Vielen Dank für deine ausführliche Antwort und ja, Potenzial mich da zu verbessern ist natürlich reichlich da.
Jetzt funktioniert es wie gewünscht, perfekt!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige