2017-01-27 6 views
0

Ich habe ein Problem.Ich habe einen erweiterten Filter in meinem Makro gesetzt, aber wenn ich zum Beispiel Szenario 2, 3, 4 auswählen möchte, ist auch 402, 403, 404, wenn ich nur das spezifische Szenario will, nicht das 2,3,4 enthält, hier ist mein Code unten. Schätzen Sie alle help.TksFilter spezifischen Wert, nicht, dass der Wert enthält VBA

Sub Filtering() 
' 
' AdvencedFilterNew Macro 
' 

    Dim WsOutput As Worksheet 
    Dim WsMain As Worksheet 
    Dim WsScenarios As Worksheet 
    Dim ScenarioIDrow As Long 
    Dim ScenarioIDColumn As Long 
    Dim rgn As Range 
    Dim p As String 
    Dim q As String 
    Dim f As Range 

    Set WsOutput = Worksheets("Output") 
    Set WsMain = Worksheets("Main Menu") 
    Set WsScenarios = Worksheets("Scenarios") 


    Application.ScreenUpdating = False 
    Application.DisplayAlerts = False 
    Application.DisplayStatusBar = True 

    WsOutput.Activate 
    Cells.EntireColumn.Hidden = False 

    WsMain.Activate 
    Range("F15").Select 
    Range("F17:H1000").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ 
    Range("F14:H15"), Unique:=False 


    ScenarioIDrow = WsOutput.Cells.Find("Scenario ID").row 
    ScenarioIDColumn = WsOutput.Cells(ScenarioIDrow, Columns.Count).End(xlToLeft).Column 
    p = WsOutput.Cells(ScenarioIDrow, 2).Address(RowAbsolute:=False, ColumnAbsolute:=False) 
    q = WsOutput.Cells(ScenarioIDrow, ScenarioIDColumn).Address(RowAbsolute:=False, ColumnAbsolute:=False) 


    WsOutput.Activate 
    WsOutput.Range(p, q).Select 
    Set f = selection.Find(What:=Worksheets("Main Menu").Range("G15").Value, After:=ActiveCell, LookIn:=xlFormulas, LookAt _ 
     :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ 
     False, SearchFormat:=False) 

    For Each rgn In selection 

If f Is Nothing Then 
    rgn.EntireColumn.Hidden = False 

    ElseIf rgn = f Then 
    rgn.EntireColumn.Hidden = False 

    Else 
    rgn.EntireColumn.Hidden = True 
End If 

    Next rgn 

    WsMain.Activate 
    WsMain.Range("F15").Select 

End Sub 

Wo sagt Range ("G15"). Wertdaten gefiltert werden.

+0

Können Sie teilen, was die Kriterien? – Vinnie

+0

Bereich ("F14: H15"), Unique: = False hier ist das Kriterium. –

Antwort

1

Try this:

Set f = selection.Find(What:=Worksheets("Main Menu").Range("G15").Value, After:=ActiveCell, LookIn:=xlFormulas, LookAt _ 
     :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ 
     False, SearchFormat:=False) 
+0

das funktioniert! vielen Dank! –