Herbers Excel-Forum - das Archiv

Listbox - Auswahl mit Suchkriterium

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Listbox - Auswahl mit Suchkriterium
von: AxelW
Geschrieben am: 23.09.2003 16:37:23
Hallo Zusammen im Forum,

ich hatte gestern von Chris einen Super Tipp erhalten, wie man ein Listenfeld mit einem Suchkriterium füllt. Funktioniert wie gesagt bestens, A B E R ...
schon komme ich wieder nicht weiter. Nachdem alle Zeilen, die in der Spalte A ein "x" stehen haben, in das Listenfeld eingelesen sind, möchte ich nun rückwärts nach einer Auswahl im Listenfeld, das betreffende "x" in der Zeile wieder löschen, zum Beispiel durch ein Extra Commandbutton "Auswahl entfernen". Es gelingt mir leider nicht den Listbox1.ListIndex() der entsprechenden Zeilennummer zuzuweisen.
Vielleicht kann mir jemand weiterhelfen.

Vielen Dank schon mal im Voraus.

Gruß Axel

Hier noch einmal der Code von gestern.

Meine Anfrage lautete:
"Hallo Zusammen,
Ich habe einen Tabellenbereich von "A1:F200", gefüllt mit Werten.
In der Spalte "A" werden die Zellen einfach mit einem "x" versehen, wenn die entsprechenden Zeilen verwendet werden sollen.
Nun möchte ich in meiner Userform ("Userform1") ein Listenfeld ("Listbox1") nur mit den Zeilen füllen, in denen das "x" in der Spalte steht."

Hier der Code von Chris:

Sub Suchen()
Dim i As Integer
Dim lngArr As Integer
Dim SuchZelle As String
Application.ScreenUpdating = False
SuchZelle = "x"
With Worksheets("Tabelle1")
lngArr = Application.WorksheetFunction.CountIf(.Range("A1:A200"), SuchZelle)
If lngArr = 0 Then
MsgBox "Es sind keine 'x' vorhanden !!!"
Exit Sub
End If
ReDim MyArray(1 To lngArr, 0 To 4)
lngArr = 0
For i = 1 To 200
If .Cells(i, 1) = SuchZelle Then
lngArr = lngArr + 1
MyArray(lngArr, 0) = .Cells(i, 2)
MyArray(lngArr, 1) = .Cells(i, 3)
MyArray(lngArr, 2) = .Cells(i, 4)
MyArray(lngArr, 3) = .Cells(i, 5)
MyArray(lngArr, 4) = .Cells(i, 6)
End If
Next i
UserForm1.ListBox1.ColumnCount = 5
UserForm1.ListBox1.List = MyArray
End With
End Sub

Bild

Betrifft: AW: Listbox - Auswahl mit Suchkriterium
von: ChrisL
Geschrieben am: 23.09.2003 17:31:37
Hi Axel

Option Explicit

Private Sub CommandButton1_Click()
Dim iZeile As Long, iAnzahl As Long
If ListBox1.ListIndex = -1 Then
MsgBox "Es wurde keine Auswahl getroffen."
Exit Sub
End If
For iZeile = 1 To Range("A65536").End(xlUp).Row
If Cells(iZeile, 1) = "x" Then iAnzahl = iAnzahl + 1
If iAnzahl = ListBox1.ListIndex + 1 Then Exit For
Next iZeile
Cells(iZeile, 1) = ""
ListBox1.RemoveItem (ListBox1.ListIndex)
End Sub


Private Sub UserForm_Initialize()
Call suchen
End Sub


Und dann habe ich leider noch ein kleiner Fehler im anderen Makro gefunden (letzte Zeile Application.ScreenUpdating = True)... Sorry wird langsam peinlich

Option Explicit

Sub suchen()
Dim i As Integer
Dim lngArr As Integer
Dim SuchZelle As String
Application.ScreenUpdating = False

SuchZelle = "x"

With Worksheets("Tabelle1")

lngArr = Application.WorksheetFunction.CountIf(.Range("A1:A200"), SuchZelle)

If lngArr = 0 Then
MsgBox "Keine Einträge gemäss den ausgewählten Kriterien"
Exit Sub
End If

ReDim MyArray(1 To lngArr, 0 To 4)

lngArr = 0

For i = 1 To 200
If .Cells(i, 1) = SuchZelle Then
lngArr = lngArr + 1
MyArray(lngArr, 0) = .Cells(i, 2)
MyArray(lngArr, 1) = .Cells(i, 3)
MyArray(lngArr, 2) = .Cells(i, 4)
MyArray(lngArr, 3) = .Cells(i, 5)
MyArray(lngArr, 4) = .Cells(i, 6)
End If
Next i

UserForm1.ListBox1.ColumnCount = 5
UserForm1.ListBox1.List = MyArray

End With

Application.ScreenUpdating = True
End Sub


Gruss
Chris
Bild

Betrifft: AW: DANKE, DANKE, DANKE
von: AxelW
Geschrieben am: 23.09.2003 18:06:37
Hallo Chris,

es ist kaum zu glauben. Dein Code läuft super. Ich versuche gerade hinter "Deine Zeilen" zu kommen. Die Sache mit dem "Application.ScreenUpdating = True" habe ich gestern Abend auch entdeckt, nachdem ich längere Zeit versucht hatte, Deinen Code nachzuvollziehen.
Nochmals besten Dank für Deine Tipps.

Bis irgendwann wieder mal,

Gruss, Axel
Bild

Betrifft: Danke für die Rückmeldung o.T.
von: ChrisL
Geschrieben am: 23.09.2003 21:21:19
 Bild
Excel-Beispiele zum Thema " Listbox - Auswahl mit Suchkriterium"
Mehrfachauswahl aus ListBox auslesen Gefilterte Daten in eine ListBox einlesen
Dateien aus Listbox auslesen und öffnen Listbox-Eintrag durch Mausbewegung markieren
ListBox-Einträge auswechseln Horizontal angeordnete Elemente in eine ListBox übernehmen
Tabellenblattnamen in eine ListBox einlesen ListBox bei Eintrag erweitern
Zellinhalt suchen und Zelle auswählen Die Zelle mit dem höchsten Wert Auswählen