ein Kollege hat mir vor seinem Urlaubsantritt in Unkenntnis meiner rudimentären VBA-Kenntnisse eine unfertige Datei zur Fertigestellung zukommen lassen, die ich versuche zu entschlüsseln, um die Formel bzw. den Code auch auf weitere Zellen in derselben Datei anwenden zu können. Die Datei enthält Zeitungsartikel und die Formel bzw. der Code dient der Suche nach Autoren in der Spalte E.
Was ich bislang herausfinden konnte:
In Spalte E3 kann man einen Autorennamen eingeben und nach verlassen der Zelle fängt das System an zu suchen. Das ist der dahinterliegende Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets(1)
Call ws.Range("B6").AutoFilter(2, "yes", , , True)
ws.Range("E3").Activate
End Sub
Daraufhin habe ich die Spalte B eingeblendet. In den Zeilen steht jeweils "Yes" und folgender Code:=WENN($E$3="";"Yes";WENN(ISTZAHL(SUCHEN($E$3;E7));"yes";"No"))
Soweit, wie ich die Formel verstehe, wird in Spalte B auf die Zelle E3 (die Eingabezelle für den Suchbegriff) geschaut. Solange die Zelle E3 leer ist, steht in Spalte B automatisch "Yes" und sämtliche Datensätze werden angezeigt. Sobald eine Eingabe vorgenommen wurde, sucht Spalte B nach dem Suchbegriff in Spalte E und scheibt beim Auffinden "Yes" und ansonsten "No". Der Code wiederum filtert nach allen "Yes"-Einträgen und zeigt nur diese an.
Was ich leider nicht genau nachvollziehen kann, ist der VBA-Code. Ich denke, daraus erkennen zu können, dass das erste Arbeitsblatt benannt wird. Dann wird in Spalte B6 der Autofilter angesprochen. Den unten formatierten Klammerzusatz kann ich jedoch leider nicht deuten. Und wozu dient der Part ws.Range("E3").Activate ?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets(1)
Call ws.Range("B6").AutoFilter(2, "yes", , , True)
ws.Range("E3").Activate
End Sub
Vielen lieben Dank an all jene, die meinen monströsen Text bis hierhin durchgelesen haben. Ich würde mich sehr freuen, wenn Ihr mir vielleicht einen kleinen Tipp geben könntet, was genau bei den angesprochenen Bereichen im Code passiert.Schöne Grüße aus dem trüben Berlin
Krauti