Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1432to1436
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
Spalte in LB nach Wert durchsuchen
29.06.2015 07:30:54
Chris
Hallo VBAler,
ich möchte in einer vierspaltigen Listbox die vierte Spalte nach einem bestimmten Eintrag durchsuchen. Wenn dieser gefunden worden ist, soll eine msgbox ausgegeben werden.
Ich erhalte die Fehlermeldung "Objekt erforderlich". Weiß jmd. eine Lösung?
Danke
Chris
Private Sub CommandButton12_Click()
Dim lngcolumn As Long
With UserForm1.ListBox3
If .List(.ListCount - 1, 3).Value = "A" Then
MsgBox "A gefunden"
Else
MsgBox "nicht gefunden"
End If
End With
End Sub

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalte in LB nach Wert durchsuchen
29.06.2015 08:07:45
Beverly
Hi Chris,
vielleicht so:
    If Not IsError(Application.Match("A", Application.Index(ListBox1.List, 0, 4), 0)) Then
MsgBox "Vorhanden"
Else
MsgBox "Nicht vorhanden"
End If


AW: Spalte in LB nach Wert durchsuchen
29.06.2015 08:38:18
Chris
Hi Beverly,
danke für deine Antwort. Ich erhalte die Meldung "Typen unvertäglich" sobald A vorhanden ist....
Eine Idee?
Chris

AW: Spalte in LB nach Wert durchsuchen
29.06.2015 10:59:46
Beverly
Hi Chris,
bei mir löst der Code keinen Fehler aus.
https://www.herber.de/bbs/user/98540.xlsm


Anzeige
AW: Spalte in LB nach Wert durchsuchen
29.06.2015 12:34:00
Chris
HI Karin,
danke für das Beispiel. Der unterschied zu meinem besteht darin, dass die Inhalte der UserForm nicht in einem mit der LB3 verknüpften Sheet enthalten sind, sondern nur optisch in der LB3 angezeigt werden. Müssen die Inhalte der LB3 zwingend an ein Sheet übergeben werden?
Gruß
Chris

AW: Spalte in LB nach Wert durchsuchen
29.06.2015 14:37:01
Beverly
Hi Chris,
wie füllst du deine ListBox?


AW: Spalte in LB nach Wert durchsuchen
29.06.2015 17:32:16
Chris
Melde mich morgen diesbezüglich Gruß

AW: Spalte in LB nach Wert durchsuchen
30.06.2015 06:07:21
Chris
Hallo Karin,
anbei das Makro um die Listbox zu füllen:
On Error GoTo err
Dim lngRow As Long, lngcolumn As Long
With ListBox1
For lngRow = 0 To .ListCount - 1
If .Selected(lngRow) Then
ListBox3.AddItem
For lngcolumn = 0 To .ColumnCount - 1
ListBox3.List(ListBox3.ListCount - 1, lngcolumn) = .List(lngRow, lngcolumn)
Next
End If
Next
End With
err:
Exit Sub
End Sub

Anzeige
AW: Spalte in LB nach Wert durchsuchen
30.06.2015 06:29:00
Beverly
Hi Chris,
eine Möglichkeit:
    Dim lngZaehler As Long
Dim blnVorhanden As Boolean
For lngZaehler = 1 To ListBox1.ListCount
If ListBox1.List(lngZaehler, 3) = TextBox1 Then
blnVorhanden = True
Exit For
End If
Next lngZaehler
If blnVorhanden Then
MsgBox "Vorhanden"
Else
MsgBox "Nicht vorhanden"
End If

Eine Frage: wozu benötigst du On Error in deinem Code?


AW: Spalte in LB nach Wert durchsuchen
30.06.2015 07:07:01
Chris
Hi Karin,
danke, scheint erstmal zu laufen. ch habe aus If ListBox1.List(lngZaehler, 3) = TextBox1 .... ="A" gemacht.
Kann man das auch auf ein zweites Kriterium erweitern ohne das gesamte Makro kopieren zu müssen?
also so:
If ListBox1.List(lngZaehler, 3) = "A" Or "B" Then
....
On error: Ich das meistens noch rein, damit die VBA Umgebung nicht meckert, weil manchmal auch andere Leute mit diesen Makros arbeiten, die noch weniger Ahnung haben als ich ;-)
Könntest du mir das Makro oben Zeile für Zeile erklären? Was ist Boolean? Die Hilfe auf die oft verwiesen wird, ist leider für mich nicht hilfreich :-/
Vielen Vielen Dank für deine Hilfe ! TOP :-)

Anzeige
AW: Spalte in LB nach Wert durchsuchen
30.06.2015 07:31:37
Beverly
Hi Chris,
zu Frage 1: du musst für beide Abfragen auch angeben, womit vergleichen werden soll - also der ListBox-Spalte
If ListBox1.List(lngZaehler, 3) = "A" Or ListBox1.List(lngZaehler, 3) = "B" Then

On Error - sollte man nur sehr spärlich einsetzen und nur dann wenn es KEINE andere Möglichkeit für das Abfangen eines Fehler gibt. In deinem Fall musst du dich fragen: was für ein Fehler könnte denn beim Durchlaufen der Schleife für die selektierten Einträge auftreten? Die Antwort ist m.E. - kein Fehler. Ist etwas ausgewählt, dann wird die Schleife normal ausgeführt, ist nichts ausgewählt, dann passiert auch nichts. Fazit: On Error kannst du hier weglassen.
Zu Frage des Codes: eine Boolean-Variable gibt 2 Zustände wieder - entweder Wahr oder Falsch. Im Code wird in der Schleife über alle ListBox-Einträge geprüft, ob der laufende Eintrag in der 4. Spalte (beachte - Spaltenzählung beginnt bei 0, deshalb 3 im Code) dem Inhalt der TextBox entspricht. Falls Ja, dann wird die Boolean-Variable auf True gesetzt und die Schleife verlassen - damit kann der Codedurchlauf abgekürzt werden, falls der gesuchte Eintrag schon vor der letzten Zeile gefunden wird. Anschließend wird geprüft, ob die Variable auf True steht (der Wert also gefunden wurde) und in Abhängigkeit davon wird die MsgBox ausgegeben.


Anzeige
AW: Spalte in LB nach Wert durchsuchen
30.06.2015 07:50:57
Chris
Hi Karin,
danke, scheint erstmal zu laufen. ch habe aus If ListBox1.List(lngZaehler, 3) = TextBox1 .... ="A" gemacht.
Kann man das auch auf ein zweites Kriterium erweitern ohne das gesamte Makro kopieren zu müssen?
also so:
If ListBox1.List(lngZaehler, 3) = "A" Or "B" Then
....
On error: Ich das meistens noch rein, damit die VBA Umgebung nicht meckert, weil manchmal auch andere Leute mit diesen Makros arbeiten, die noch weniger Ahnung haben als ich ;-)
Könntest du mir das Makro oben Zeile für Zeile erklären? Was ist Boolean? Die Hilfe auf die oft verwiesen wird, ist leider für mich nicht hilfreich :-/
Vielen Vielen Dank für deine Hilfe ! TOP :-)
Anzeige

335 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige