Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Filtern horizontal (VBA) nach/mit 2 Bedingungen

Filtern horizontal (VBA) nach/mit 2 Bedingungen
Heiko
Hallo zusammen,
ich habe folgendes Problem:
In einer Liste stehen oben Mitarbeiternamen, Abteilungen und Positionen und seitlich Vorgabedokumente. Diese Anordnung ist nicht veränderlich (bedingt durch Vorgaben und Anzahl Dokumente).
Jetzt würde ich gerne horizontal filtern (links nach rechts) z.B. bei Eingabe der Abteilung und der Position in A1 und A2 sollten alle Zellen ausgeblendet werden, in denen diese beiden Filterkriterien nicht erfüllt werden.
Ich habe das sowohl mit If-Anweisungen als auch mit Select Case versucht, allerding habe ich irgendwo einen Fehler, denn beim ausprobieren ignoriert Excel immer meine Bedingung aus A1.
Hier mein Code:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range, Zelle As Range, Bereich1 As Range, Zelle1 As Range, sStatus As Boolean,  _
sStatus1 As Boolean
Set Bereich = Me.Range("C1:CZ1")
sStatus = Application.ScreenUpdating
Application.ScreenUpdating = False
On Error GoTo Fehler
For Each Zelle In Bereich.Cells
If Zelle.Value = Me.Range("A1").Value Then
Zelle.EntireColumn.Hidden = False
ElseIf Range("A1") = "" Then
Zelle.EntireColumn.Hidden = False
Else
Zelle.EntireColumn.Hidden = True
End If
Next Zelle
Fehler:
Application.ScreenUpdating = sStatus
Set Zelle = Nothing
Set Bereich = Nothing
End Sub

ODER*************************
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range, Zelle As Range, sStatus As Boolean
Set Bereich = Me.Range("C1:CZ2")
For Each Zelle In Bereich.Cells
Select Case Zelle.Value
Case Is = Me.Range("A1").Value
Zelle.EntireColumn.Hidden = False
Case Is = Cells(1, 1) = ""
Zelle.EntireColumn.Hidden = False
'Zelle.Interior.ColorIndex = 3
' Worksheets("MA-Kompetenzen").Columns("BD:BM").Hidden = True
Case Is = Me.Range("A2").Value
Zelle.EntireColumn.Hidden = False
Case Is = Cells(2, 1) = ""
Zelle.EntireColumn.Hidden = False
'Zelle.Interior.ColorIndex = 3
' Worksheets("MA-Kompetenzen").Columns("BD:BM").Hidden = False
Case Else: Zelle.EntireColumn.Hidden = True
'Zelle.Interior.ColorIndex = 0
End Select
Next Zelle
End Sub

Vielleicht kann mir jemand ´sagen was ich falsch mache und den Code gleich korrigieren.
Danke!
AW: Filtern horizontal (VBA) nach/mit 2 Bedingungen
04.10.2011 10:29:09
Tino
Hallo,
der 1. Code funktioniert doch?! Wird der Code überhaupt gestartet?
Steht der Code in der richtigen Tabelle,
vielleicht durch ein Versehen Application.EnableEvents auf False stehen?
Ich würde noch abfragen ob eine Eingabe in A1 überhaupt stattgefunden hat.
If Intersect(Range("A1"), Target) Is Nothing Then Exit Sub
Gruß Tino
Logikproblem
04.10.2011 10:35:30
Rudi
Hallo,
du musst doch auch prüfen, ob Zelle gerade eine Abteilung oder eine Position betrifft.
Was ist mit dem Mitarbeiter?
Lad mal ein Beispiel hoch.
Gruß
Rudi
AW: .... hier oder .... da? < Crossposting
04.10.2011 11:00:40
Gerd
http://www.office-loesung.de/ftopic485008_0_0_asc.php
... sollte man tunlichst nicht machen, sondern in einem Forum das Problem griffig beschreiben.
Gruß Gerd
Anzeige
na dann besser da oT.
04.10.2011 11:50:01
Tino
AW: Filtern horizontal (VBA) nach/mit 2 Bedingungen
04.10.2011 11:27:21
Heiko
So, ich habe mal meine Tabelle eingestellt, links oben A1 ist das Suchkriterium 1 für Abteilungen
A2 das Suchkriterium für Position Abteilungsleiter, Mitarbeiter, etc.
also ich habe zum beispiel 50 Mitarbeiter in 10 Abteilungen davon 15 Führungskräfte also mehr als eine Führungskraft in einer Abteilung und 40 Mitarbeiter.
Gebe ich nun an Abteilung (A1) und AL für Abteilungsleiter (A2)
möchte ich alle Abteilungsleiter für die ausgewählte Abteilung sehen!
Bei meinen Makros war immer das Problem, gebe ich in A1 etwas ein blendet er alle sw as dem Kriterium nicht entspricht aus (korrekt!!!), gebe ich auch das 2. Kriterium ein, Zeigt das Makro alle AL an, also auch die, die anderen Abteilungen angehören (also nicht kriterium 1 entsprechen -- FALSCH!!!)
https://www.herber.de/bbs/user/76851.xlsm
Anzeige
AW: Filtern horizontal (VBA) nach/mit 2 Bedingungen
04.10.2011 13:55:26
Rudi
Hallo,
trotz Crossposting:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rC As Range, rFilter As Range, sF1 As String, sF2 As String
If Intersect(Target, Range("A1:A2")) Is Nothing Then Exit Sub
Application.EnableEvents = False
Application.ScreenUpdating = False
sF1 = IIf(Range("A1") = "", "*", LCase(Range("A1")))
sF2 = IIf(Range("A2") = "", "*", LCase(Range("A2")))
Set rFilter = Range("C1:CZ1")
For Each rC In rFilter
rC.EntireColumn.Hidden = Not LCase(rC) Like sF1 Or Not LCase(rC.Offset(1)) Like sF2
Next
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

Gruß
Rudi
Anzeige
AW: Filtern horizontal (VBA) nach/mit 2 Bedingungen
06.10.2011 11:25:52
Heiko
Vielen Dank für die Lösung :-)
Kann ich denn den "Filter" auch so verwenden, daß z.B. ich nicht die exakte Abteilung eingeben muß, sondern die ersten Buchstaben auch reichen? Also habe ich die Abteilungen DQX, DQXM und DQXMO und gebe DQX ein -- erscheinen alle drei -- gebe ich DQXM ein -- erscheinen nur DQXM und DQXMO.
Hofe ich habe mich verständlich ausdrücken können?!
Was verstehe ich denn unter crossposting?
Danke im Voraus
Heiko
AW: Filtern horizontal (VBA) nach/mit 2 Bedingungen
06.10.2011 11:39:21
Rudi
Hallo,
du kannst mit Jokern arbeiten
z.B. dqx* listet alle mit dqx beginnenden Abtlg.
Crossposting: Lies dir hier https://www.herber.de/forum/faq.htm mal den Abschnitt 'Rundumschlag' durch.
Gruß
Rudi
Anzeige

339 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige