PDA

Vollständige Version anzeigen : Autofilter automatisch füllen


klumpen
18.03.2009, 15:03
Moin,

ich habe eine Arbeitsmappe, in der Merkmalsangaben für Maschinen gemacht werden können (z.B. Art, kW, ...) und in einem anderen Tabellenblatt eine Liste mit Alternativgeräten (~1.000 Einträge). Jetzt will ich die Liste automatisch filtern, d.h. der Auto-Filter soll mit Hilfe eines Makros gefüllt werden, und mir nur passende Maschinen anzeigen. Also nur aus der einen Art, mit einer bestimmten Bandbreite von kW etc.
Da mein Chef keinen VBA-Lehrgang bezahlen will, bin ich auf eure Hilfe angewiesen. Mein Hauptproblem ist, dass der Satan im aufgezeichnetem Makro die Werte kopiert, und nicht einfach nur die Funktion.

Sub Abfrage()
'
' Abfrage Makro
' Makro am 18.03.2009 von xxxxxxx aufgezeichnet
'
' Tastenkombination: Strg+Umschalt+A
'
Range("D10").Select
Selection.Copy
ActiveSheet.Next.Select
Selection.AutoFilter Field:=1, Criteria1:="=GaSt", Operator:=xlAnd
ActiveSheet.Previous.Select
Range("D11").Select
Application.CutCopyMode = False
Selection.Copy
ActiveSheet.Next.Select
Selection.AutoFilter Field:=4, Criteria1:=">1", Operator:=xlAnd
ActiveSheet.Previous.Select
Range("F11").Select
Application.CutCopyMode = False
Selection.Copy
ActiveSheet.Next.Select
Selection.AutoFilter Field:=4, Criteria1:=">1", Operator:=xlAnd, _
Criteria2:="<3"
ActiveSheet.Previous.Select
Range("D12").Select
End Sub

So sieht das aufgezeichnete Makro aus. Führ ich das jetzt nochmal mit anderen Kriterien aus, werden die aufgezeichneten Kriterien verwendet.

Danke für die Hilfe

jinx
18.03.2009, 15:50
Moin, klumpen,

zuviel Gespringe zwischen den Tabellen - eine andere ;öglichkeit:

Sub Abfrage_mod()
'
' Abfrage Makro
' Makro am 18.03.2009 von xxxxxxx aufgezeichnet
'
' Tastenkombination: Strg+Umschalt+A

Dim varWas As Variant
Dim lngUntergrenze As Long
Dim lngObergrenze As Long
'
varWas = InputBox("Geben Sie den Begriff ein:", "Abfrage", "GaSt")
If varWas = False Then Exit Sub
lngUntergrenze = InputBox("Geben Sie die Untergrenze ein:", "Abfrage", 1)
lngObergrenze = InputBox("Geben Sie die Obergrenze ein:", "Abfrage", 3)

With Selection
.AutoFilter Field:=1, Criteria1:="=" & varWas, Operator:=xlAnd
.AutoFilter Field:=4, Field:=4, Criteria1:=">" & lngUntergrenze, _
Operator:=xlAnd, _
Criteria2:="<" & lngObergrenze
End With

End Sub

klumpen
19.03.2009, 06:28
Moin Jinx,

besten Dank erstmal. Aber folgendes Problem:

Die Lösung blendet ein Eingabefenster ein, im Eingabefeld und nach Bestätigen wird ein Autofilter in der Eingabe gesetzt. Ich brauch aber wohl nen Autofilter ein Tabellenblatt weiter in der Datentabelle.

Ich versuch mal, meine VBA-(Un)Kenntnisse ins Spiel zu bringen, wenn sonst noch jemand ne Lösung am Mann hat, bin ich für alles offen.

Danke schonmal

jinx
19.03.2009, 17:57
Moin, klumpen,

wenn Du eine Schaltfläche aus der symbolleiste Formular einsetzt und den Code einbindest, wird der Autofilter immer auf der Tabelle angewandt, auf der er gestartet wird. Und da ich nicht weiß, wo Du den Filter starten möchtest, war adas erst einmal ein Vorschlag als Anfang. In der jetzigen Modifikation kannst Du in einer anderen Tabelle auf den Suchbegriff zeigen; der Fehler bei der Auswahl des Kriteriums in Spalte 4 wurde auch ausgemerzt:

Sub Abfrage_mod2()
'
' Abfrage Makro
' Makro am 18.03.2009 von xxxxxxx aufgezeichnet
'
' Tastenkombination: Strg+Umschalt+A

Dim varWas As Variant
Dim lngUntergrenze As Long
Dim lngObergrenze As Long
'
varWas = Application.InputBox("Geben Sie die Zelle mit dem Suchbegriff an", Type:=8)
If varWas = False Then Exit Sub
lngUntergrenze = InputBox("Geben Sie die Untergrenze ein:", "Abfrage", 1)
lngObergrenze = InputBox("Geben Sie die Obergrenze ein:", "Abfrage", 3)

With Selection
.AutoFilter Field:=1, Criteria1:="=" & varWas, Operator:=xlAnd
.AutoFilter Field:=4, Criteria1:=">" & lngUntergrenze, _
Operator:=xlAnd, _
Criteria2:="<" & lngObergrenze
End With

End Sub