ich habe hier eine Userform, die um eine Sache erweitert werden soll und da komme ich bisher nicht weiter. Es gibt 2 ComboBoxen und eine ListBox. In der ComboBox1 wird der Nachname eingetragen und in der ComboBox2 der Vorname. In der ListBox werden alle bisher eingetragenen Namen angezeigt. Dort sollen die Einträge je nach Eingabe der Namen entsprechend weniger werden zur Kontrolle. Mit den Nachnamen geht das ohne Probleme, doch wenn ich die Vornamen ebenfalls mit Filtern möchte, bekomme ich das nicht hin, da ich ein Anfänger in Sachen VBA bin und mir meine bisherigen Lösungen hier aus dem tollen Forum geholt habe.
Wie kann ich nun die beiden Eingaben zusammenführen, damit in der ListBox die Daten entsprechend gefiltert werden und ein neuer Eintrag in die Liste möglich ist, auch wenn ein Nachname doppelt vorhanden wäre?
Gruß Ulf
Private Sub Button_Take_Click()
Dim last As Integer
If ListBox1.ListCount Then
MsgBox "Der/die Mitarbeiter/in ist bereits in der Liste vorhanden"
Unload Personal
Else
last = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row + 1
ActiveSheet.Cells(last, 4).Value = Personal.ComboBox2.Value
ActiveSheet.Cells(last, 5).Value = " , "
ActiveSheet.Cells(last, 6).Value = Personal.ComboBox1.Value
MsgBox "Der/die Mitarbeiter/in ist neu"
Unload Personal
End If
End Sub
Private Sub UserForm_Initialize()
Personal.Height = 250
Personal.Width = 300
Personal.ComboBox1.RowSource = "Data!B:B" 'Nachname
Personal.ComboBox2.RowSource = "Data!C:C" 'Vorname
Dim lngZeileMax As Long
Dim lngZeile As Long
Dim lngz As Long
With Me.ListBox1
.ColumnCount = 2
.ColumnWidths = "100;100"
.Font.Size = 12
End With
With Worksheets("Personal")
lngZeileMax = .Range("C" & .Rows.Count).End(xlUp).Row
For lngZeile = 3 To lngZeileMax
Me.ListBox1.AddItem .Range("F" & lngZeile).Value
Me.ListBox1.Column(1, lngz) = .Range("D" & lngZeile).Value
lngz = lngz + 1
Next lngZeile
End With
End Sub
Private Sub ComboBox1_Change()
Dim i As Integer
Dim lngLaenge As Long
Dim strText As String
Me.ListBox1.Clear
UserForm_Initialize
lngLaenge = Len(Me.ComboBox1.Value)
If Left(Me.ComboBox1.Value, 1) = "*" Then
strText = LCase(Replace(Me.ComboBox1.Value, "*", ""))
For i = Me.ListBox1.ListCount - 1 To 0 Step -1
If InStr(Me.ListBox1.List(i, 0), strText) > 0 Or _
InStr(LCase(Me.ListBox1.List(i, 1)), strText) > 0 Then
Else
Me.ListBox1.RemoveItem i
End If
Next i
Else
For i = Me.ListBox1.ListCount - 1 To 0 Step -1
If Left(Me.ListBox1.List(i, 0), lngLaenge) = Me.ComboBox1.Value Or _
LCase(Left(Me.ListBox1.List(i, 1), lngLaenge)) = LCase(Me.ComboBox1.Value) > 0 Then
Else
Me.ListBox1.RemoveItem i
End If
Next i
End If
End Sub
Private Sub ComboBox2_Change() 'Vorname
End Sub