Das Archiv des Excel-Forums
Listbox füllen mit Suchkriterium
Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Betrifft: Listbox füllen mit Suchkriterium
von: AxelW
Geschrieben am: 22.09.2003 16:54:43
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.
Habe viele Wege probiert und keiner führt zum Erfolg.
Kann mir jemand helfen?
Danke, Axel
Betrifft: AW: Listbox füllen mit Suchkriterium
von: ChrisL
Geschrieben am: 22.09.2003 17:00:06
Hi Axel
Siehe nachstehendes Makro...
Option Explicit
Sub suchen()
Dim i As Integer
Dim lngArr As Integer
Dim SuchZelle As Long
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 3)
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
Tabell1 musst du noch anpassen.
Gruss
Chris
Betrifft: AW: Listbox füllen mit Suchkriterium
von: ChrisL
Geschrieben am: 22.09.2003 17:04:09
Suchzelle natürlich als String deklarieren.
Betrifft: AW: Listbox füllen mit Suchkriterium
von: AxelW
Geschrieben am: 22.09.2003 18:24:22
Hallo Chris,
Danke Dir für die schnelle Antwort. Ich werd`s gleich mal versuchen.
Gruß, Axel
Betrifft: AW: Listbox füllen KEIN ERFOLG
von: AxelW
Geschrieben am: 22.09.2003 19:00:18
Hallo Chris,
danke für Deine Idee, aber ich bekomme eine Fehlermeldung (Laufzeitfehler: 13 "Typen unverträglich").
Ich habe Deinen Code in das Initialize-Ereignis der Userform gelegt. Ist doch richtig, oder ???
Gruß, Axel
Betrifft: AW: Listbox füllen KEIN ERFOLG
von: ChrisL
Geschrieben am: 22.09.2003 20:48:26
Hi Axel
Auf welcher Zeile kommt denn der Fehler? Jedenfalls habe ich grad einen Fehler entdeckt...
ReDim MyArray(1 To lngArr, 0 To 3)
sollte
ReDim MyArray(1 To lngArr, 0 To 4)
lauten. Sind ja 5 Spalten, angefangen bei Null. Habe drum den Code aus einem anderen Beispiel kopiert und leicht abgeändert, darum auch der anfängliche Fehler mit der Deklaration. Versuch den Code aber trotzdem mal nachzuvollziehen. Ist ein Beispiel mit Array, was ich eigentlich lange Zeit auch nie verstanden habe, aber eigentlich gar nicht so kompliziert ist. Du kannst in so ein Array, welches ähnlich wie eine Variable funktioniert, eine ganze Tabelle, also Zeilen und Spalten abspeichern und dann geschlossen eine ListBox übergeben.
Wenn die Änderung nicht zum Erfolg führt, muss ich's dann trotzdem mal testen. Vielleicht kannst du dann gleich mal dein Beispiel in den Anhang stellen, geht schneller.
Du kannst es als Initilize Ereignis zum Userform machen, in diesem Fall kannst du auf den Bezug zum Userform in den letzten zwei Zeilen verzichten. Ansonsten kannst du es auch in ein Modul stellen und im Initialize mit 'Call Makro' aufrufen. Kann manchmal dem Überblick wegen einfacher sein, wenn du grössere Codeteile in Module ablegst, die du auch strukturieren und beschriften kannst. Dies solltest du insbesondere dann tun, wenn du ein und den selben Code für mehrer Vorgänge innerhalb eines UF benutzt.
In jedem Fall solltest du darauf achten, das UF sauber mit Unload UF zu schliessen und nicht nur mit 'UF.Hide', da sonst das UF u.U. nicht frisch initialisiert wird und dadurch der alte Inhalt im UF dargestellt wird.
Gruss
Chris
bis dann
Chris
Excel-Beispiele zum Thema " Listbox füllen mit Suchkriterium"