Ich versuche, eine Excel-Tabelle automatisch über VBA zu filtern.Filtern von Excel-Tabelle mit VBA
Die Tabelle enthält eine Reihe von Zeilen und befindet sich derzeit in B5: N584 von Sheet2. Die erste Spalte der Tabelle hat "Country" als Header und das ist die Spalte, auf die ich den Filter anwenden möchte. Ich möchte, dass die Tabelle automatisch nach dem vom Benutzer eingegebenen Ländernamen gefiltert wird. Der Ländername wird auf Zelle B3 von Sheet2 sein, jetzt als "= Sheet1! A1" definiert, wo der Benutzer das Land eingibt.
Die Art, wie ich es gerne arbeiten würde, ist: - Der Benutzer schreibt einen Ländernamen auf Zelle A1 von Sheet1. - Das Land wird automatisch in Zelle B3 von Sheet2 gezogen. - Die Tabelle wird in der ersten Spalte entsprechend dem Inhalt von Zelle B3 von Tabelle2 gefiltert.
Dies ist der VBA-Code habe ich geschrieben:
Public Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("B3").Address Then
Range("B5:N584").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("B2:B3")
End If
End Sub
Auf Zelle B2 ich geschrieben habe, "Country" genau wie in der Spaltenüberschrift.
Was ich getan habe, funktioniert fast. Das einzige Problem ist, dass der Filter nicht automatisch angewendet wird. Das vom Benutzer eingegebene Land in Zelle A1 wird in Zelle B3 von Tabelle 2 gezogen, aber der Filter wird erst angewendet, wenn ich auf die Bearbeitungsleiste von Zelle B3 klicke und auf Eingabe klicke, ohne etwas zu ändern. Dann wird der Filter auf die folgende Tabelle angewendet.
Ich frage mich, was verhindern könnte, dass die Tabelle automatisch erkennt, dass ein neues Land in Zelle B2 ist, ohne dass man auf die Zelle klicken und ENTER drücken muss.
Vielen Dank.
Vielen Dank für Ihre Hilfe.Wie würde ich das tun, wenn A1 in einem anderen Blatt ist? Wie verweise ich das andere Blatt im "= Range()"? – franciscofcosta
Sie müssten den Event-Handler 'WOrksheet_Change' in das * Other * Sheet einfügen und dann den' Range' für das Blatt qualifizieren, gegen das er arbeiten muss (zB 'Worksheets (" Sheet2 "). Range (" B5: ... ') –