Anzeige
Archiv - Navigation
1388to1392
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Filter mit Makro setzen

Filter mit Makro setzen
23.10.2014 14:21:46
Jochen
Hallo Excel-Freunde, ich habe mir folgendes Makro aufgezeichnet:
Sub Filter_setzen()
Sheets("Kriterien").Select
ActiveSheet.Range("$A$2:$I$1002").AutoFilter Field:=1, Criteria1:=Array("3" _
, "5", "8"), Operator:=xlFilterValues
Sheets("Daten").Select
End Sub
Ich möchte dieses Makro allerdings dynamisch haben, das heißt dass ich in einem Auswahlfenster die Kriterien von 1 – 11 in verschiedenen Konstellationen zusammenstelle. Hat irgendjemand eine Lösung für mich parat?
Danke im Voraus
Gruß
Jochen

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Filter mit Makro setzen
23.10.2014 14:29:15
Rolf.dW
Hallo Jochen,
hier ein kl. Beispiel:
Option Explicit
Sub FLTR_Titel()
Dim inpB As String, name As String
Dim fz As Long
Dim Bereich As Range
BlattschutzNein   'Sub-Routine
Range("HOME").Offset(1, 1).Select
'(Kurz-) Bezeichnung erfassen
inpB = InputBox _
("Bitte den Titel eingeben.", _
"Filterkriterium")
If inpB = "" Then
frmMasterFILTERN.Hide
Exit Sub
Else
With Range("HOME").Offset(-2, 1)
.Offset(-1, 0).Value = "gefiltert nach:"
.Value = "TITEL"
.Font.name = "Miriam"
.Font.ColorIndex = 6
.Font.Shadow = True
End With
End If
'Komplette Bezeichnung suchen
Set Bereich = Range("Titel").Find(inpB, LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByColumns)
If Bereich Is Nothing Then
MsgBox "Der Titel konnte nicht gefunden werden."
frmMasterFILTERN.Hide
Range("HOME").Offset(1, 1).Select
Else
name = Bereich.Value
End If
'Filtern
frmMasterFILTERN.Hide
Range("Titel").AutoFilter
ActiveSheet.Range("Titel").AutoFilter Field:=1, Criteria1:=name
For fz = Range("HOME").Offset(1, 0).Row To ActiveSheet.UsedRange.Rows.Count
If ActiveSheet.Rows(fz).Hidden  True Then
Range("B" & fz).Select
Exit For
End If
Next fz
BlattschutzJa   'Sub-Routine
End Sub

Anzeige
AW: Filter mit Makro setzen
23.10.2014 14:53:08
Jochen
Hallo Rolf,
erst einmal danke für die schnelle Antwort.
Da ich nur mit dem Rekorder arbeite fehlt mir leider das Verständnis. Würdest Du mir das eventuell so zusammen schreiben das es für meine Bedürfnisse passt.
Zu meinem Makro:
Ich starte auf der “Daten“ Tabelle. Hier möchte ich die Kriterien aussuchen die dann auf der “Daten“ Tabelle gefiltert werden. Die Daten die dort dann sichtbar bleiben kopiere ich mir in ein zweites Tabellenblatt.
Danke für Deine Arbeit.
Gruß
Jochen

AW: Filter mit Makro setzen
23.10.2014 18:19:04
Rolf.dW
Hallo Jochen,
um das Makro an zu passen benötige ich eine Beispieldatei. Die Daten interessieren mich nicht; wichtig ist die Struktur deiner Tabelle.
Gruß, Rolf

Anzeige
AW: Filter mit Makro setzen
24.10.2014 08:12:49
Jochen
Hallo Rolf, die Datei ist leider zu groß zu hochladen.
Ich habe aber mein Makro, das ich schon einmal eingefügt habe, soweit das ich die Variablen ausgelesen bekomme. Nun ist noch das Problem dieser Wert in den Filter zugeben.
Hast Du da eventuell eine Lösung parat.
Sub Filter_setzen()
Sheets("Baustellendaten").Select
test = ""
For i = 1 To 11
If Cells(i + 26, 3) = "x" Then
test = test & Chr(34) & Cells(i + 26, 2) & Chr(34) & ", "
End If
Next
test = Left(test, Len(test) - 2)
MsgBox test
Sheets("Kriterien für Checklisten").Select
ActiveSheet.Range("$A$2:$I$1102").AutoFilter Field:=1, Criteria1:=Array(test), Operator:= _
xlFilterValues
Sheets("Baustellendaten").Select
End Sub

Im Moment wird auss dem Filter alles entfernt.
Gruß
Jochen

Anzeige
AW: Filter mit Makro setzen
24.10.2014 08:27:19
Rolf.dW
Hallo Jochen,
eine abgespeckte Version deiner Datei reicht doch. Ich möchte nur wissen, wie du deine Tabelle strukturiert hast; ggf. mit Angabe, ob die Anzahl verwendeter Zeilen limitiert oder nach oben hin offen ist.
Dein beigefügtes Makro hilft mir leider nicht weiter.
Gruß, Rolf

AW: Filter mit Makro setzen
24.10.2014 08:37:05
Daniel
Hi
das Problem ist, dass
test = test & Chr(34) & Cells(i + 26, 2) & Chr(34) & ", "
kein Array erstellt, sondern nur einen Textstring.
um das Array für deinen Filter zu erstellen musst du so vorgehen:
1. Den String test ohne Anführungszeichen erstellen, dabei das Trennzeichen voranstellen:
test = test & ", " & Cells(i + 26, 2) 
2. das erste Trennzeichen entfernen, damit nur zwischen den Werten Trennzeichen stehen (der Zahlenwert ist "länge des Trennzeichen + 1"):
test = Mid$(test, 3)
3. den Text in ein Array wandeln, dazu kannst du die Funktion SPLIT verwenden:
test = Split(test, ", ")
jetzt ist test kein Textstring mehr sondern ein Array, welches du im Filter als Mehrfachkriterium verwenden kannst.
Bei dieser Vorgehensweise wandelt sich der Variablentyp von test, dh du musst wenn du mit Option Explicit arbeitest, diese als Variant deklarieren.
Gruß Daniel

Anzeige
AW: Filter mit Makro setzen
24.10.2014 10:02:34
Rolf.dW
Hallo Jochen,
warum machst du es so kompliziert? Dass in deinem Makro die Variablen nicht definiert waren, hat mich schon etwas verwundert, war mir aber zunächst einmal egal. Ohne Bspl-Datei bin ich raus aus diesem Thread.
Gruß, Rolf

AW: Filter mit Makro setzen
24.10.2014 12:50:13
Jochen
Hallo Daniel,
das war eine SUPER Hilfe, danke.
Rolf Dir auch noch einmal ein Dankeschön.
Gruß
Jochen

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige