stehe vor einem Problem. In einer Userform wird mit 3 Comboboxen aus einer Adressliste Daten gefiltert und auch in der Listbox angezeigt ich möchte jedoch nicht alle Felder anzeigen lassen sondern nur bestimmte und zwar ab Funktion, in den Comboboxen wird nach ADM,Ort und Klinik gesucht.
Felder für Adressliste:
ADM Kategorie Klinik Straße PLZ Ort Funktion Abteilung Telefon Anrede Titel Vorname Nachname
wo und welchen Code muss ich eingeben
Private Sub Listbox_fuellen()
'Daten für Listbox zusammenstellen
Dim AnzTreffer As Long
Dim hshA As Object
Dim i As Long
Dim Zeile As Long, Spalte As Long
Dim varADM, varOrt, varKlinik, varKey
Set hshA = CreateObject("Scripting.Dictionary")
varADM = Me.cbb1.Text
varOrt = Me.cbb2.Text
varKlinik = Me.cbb3.Text
AnzTreffer = 0
For i = LBound(arrData, 1) To UBound(arrData, 1)
If (varADM = "" Or varADM = arrData(i, 1)) Then
If (varOrt = "" Or varOrt = arrData(i, 6)) Then
If (varKlinik = "" Or varKlinik = arrData(i, 3)) Then
AnzTreffer = AnzTreffer + 1
hshA(CStr(i)) = 0
End If
End If
End If
Next
Me.lst1.Clear
If AnzTreffer > 0 Then
ReDim arrList(1 To AnzTreffer, LBound(arrData, 2) To UBound(arrData, 2))
AnzTreffer = 0
For Each varKey In hshA.keys
Zeile = Val(varKey)
AnzTreffer = AnzTreffer + 1
For Spalte = LBound(arrData, 2) To UBound(arrData, 2)
arrList(AnzTreffer, Spalte) = arrData(Zeile, Spalte)
Next
Next
With Me.lst1
.List = arrList
.ListIndex = 0
End With
End If
Set hshA = Nothing
End Sub
oder hier eintragen
Private Sub Userform_initialize()
Dim Zeile_L As Long
Dim lngZeile As Long
' Dim InZeile As Integer
'Tabellenblatt mit den Daten einer modulweiten Variablen zuweisen
Set wksData = ThisWorkbook.Sheets("Tabelle1")
With wksData
'letzte Zeile mit Daten in Spalte A des Tabellenblatts
Zeile_L = .Cells(.Rows.Count, 1).End(xlUp).Row
'Daten (Spalten A:M) im Tabellenblatt in ein Daten-Array übernehmen ohne Spaltentitel _
und miteiner Leerspalte für die Zeilennummer
arrData = .Range(.Cells(2, 1), .Cells(Zeile_L, 13))
End With
'Listbox formatieren
With Me.lst1
.ColumnCount = 7
.ColumnHeads = False
.ColumnWidths = "20Pt;20Pt;180Pt;100Pt;30Pt;50Pt;30Pt;"
End With
Call Auswahl_Reset
End Sub
Im voraus schon mal Danke für die Hilfe
Gruß Richard
office 2010 C64