2016-12-04 5 views
0

Mein Code einen Fehler geben“1004:.. Wählen Sie Methode der Range-Klasse ist fehlgeschlagen-Bereich nicht vba Auswahl

Sub AdvencedFilterNew() 
' 
' 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 

    Range("E15").Select 
    Range("E17:Q350").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ 
    Range("E14:Q15"), Unique:=False 

    Set WsOutput = Worksheets("Output") 
    Set WsMain = Worksheets("Main Menu") 
    Set wsScenarios = Worksheets("Scenarios.New") 

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

    If WsMain.Range("E15") > 0 Then 

    WsOutput.Range(p, q).Select 
    WsMain.Cells.Find("E15").Select 
    Else 
    End If 

End Sub 

Also, ich bin eine Auswahl anhand der Adresse p ein q Auswahl Welche sind A22 und ATX22.Ich weiß nicht, warum ich es auswählen kann.Es funktioniert in einigen anderen Codes, die ich verwende.Ein anderes Problem, wenn die Nummer 4 ist, findet es auch alle anderen Zahlen, die 4 enthält, zum Beispiel 1014, 1024 usw. Kann jemand helfen mich hier? Vielen Dank!

+0

Die Methode 'Range.Find' findet Zellen basierend auf ihrem Inhalt nicht adressiert. https://msdn.microsoft.com/en-us/library/office/ff839746.aspx Also ich glaube, Sie wollen 'WsMain.Range (" E15 ")' wo Sie 'WsMain.Cells.Find (" E15 ") verwenden ' – JamesFaix

+0

Danke James, du hast Recht! –

Antwort

1

es ist, weil Sie Activate ein Arbeitsblatt haben, bevor sie eine Auswahl an ihn auswählen

WsOutput.Range(p, q).Select 
WsMain.Activate 
WsMain.Cells.Find("E15").Select 
+0

Danke! du hattest Recht! –

+0

user3598756 vielleicht können Sie mir helfen. Ich möchte das E15 in WsOutput finden und wenn es gefunden wird, verstecke ich alle anderen Spalten. Ich weiß nicht, wie ich es schreiben soll, ich habe es mehrmals versucht. –

+0

Gern geschehen. Was das andere Problem anbelangt, würde ich alle 'UserdRange'-Spalten' Hidden'-Eigenschaft auf 'True' setzen und dann die gefundene Zellenspalte' Hidden'-Eigenschaft auf 'False setzen. Wenn Sie nicht erfolgreich sind, machen Sie einen neuen Beitrag mit Ihrer Codierung Bemühungen – user3598756