程不选择VBA

程不选择VBA

问题描述:

我的代码是给了一个错误” 1004:。Range类的选择方法失败程不选择VBA

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 

所以,我基于p的Q中的地址的选择范围哪些是A22和ATX22。我不知道为什么我可以选择它,它用在我使用的其他代码中,另一个问题是,如果数字是4,它也会找到其他所有包含4的数字,例如1014,1024等等。我在这里?谢谢!

+0

'Range.Find'方法根据其内容找不到地址。 https://msdn.microsoft.com/en-us/library/office/ff839746.aspx所以我相信你想'WsMain.Range(“E15”)'你在哪里使用'WsMain.Cells.Find(“E15”) ' – JamesFaix

+0

谢谢詹姆斯,你是对的! –

这是因为你必须在Activate工作表中选择任何范围之前

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

谢谢!你是对的! –

+0

user3598756也许你可以帮助我。我想在WsOutput中找到E15,当它找到它时,我隐藏所有其他列。不知道如何写,我多次尝试。 –

+0

不客气。至于另一个问题,我会将所有'UserdRange'列'Hidden'属性设置为'True',然后将找到的单元格列'Hidden'属性设置为'False。如果你没有成功通过你的编码努力做出新的职位 – user3598756