da ich deine vorherige lösung nicht kenne und du unbedingt eine VBA-Lösung willst, folgenden Vorschlag:
Schau dir in der Hilfe die Funktion "Spezialfilter" an, bereite alles vor, gebe den Suchbegriff ein und starte dann die Makroaufzeichnung.
Diese Aufzeichnung lässt sich jederzeit wiederholen.
Dann hast du das was du brauchst und es ist auch noch in VBA.
Gruss Rainer
Sub Worksheet_Activate()
Dim I, Liste
Liste = 2
With Worksheets("Datenbank")
For I = 2 To .Cells(Rows.Count, 4).End(xlUp).Row
If Not Finde_Eintrag(.Cells(I, 4).Value) Then
Worksheets("Liste").Cells(Liste, 2).Value = .Cells(I, 4).Value
Liste = Liste + 1
End If
Next
End With
End Sub
Function Finde_Eintrag(Wert)
Dim I
With Worksheets("Liste")
For I = 2 To .Cells(Rows.Count, 2).End(xlUp).Row
If Trim(Wert) = .Cells(I, 2).Value Then
Finde_Eintrag = True
Exit For
Next
End With
End Function
kann jedoch etwas dauern wenn der Rechner nicht besonders schnell ist!
Gruß Armin
Danke für den Code.
Ich habe den Code wegen einem Laufzeitfehler 438 wie folgt verändert:
Außerdem habe ich im Sub Worksheet_Activate noch eine Löschfunktion der Spalte B eingefügt, da wenn Werte in der Datenbank gelöscht wurden die Liste nicht mehr aktuell war.
Mir fehlt jetzt noch die Funktion um auch die Dazugehörigen Laufenden nummern aus Spalte A der Datenbank in die Liste zu übertragen.
Hast Du da vielleicht noch eine Idee??
Aber das wichtigste ist erst einmal geschafft.
Herzlichen Dank
Heino
Danke für Deinen Tip.
Ich habe den Code von Armin benutzt und damit schon einen Teilerfolg.
Werde mir aber trotzdem den Spezialfilter einmal ansehen.
Gruß Heino
folgende Änderung erledigt auch diese Problem:
Gruß Heino