2017-08-03 44 views
0

下面的代码是不工作我得到下标出的范围(错误9)我得到下标出的范围(错误9)

Sub advnextract() 

Sheets.Add(Before:=ActiveSheet).Name = "Resultado" 

Set extractto = ThisWorkbook.Worksheets("Resultado").Range("A5:G5") 


    Selection.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range(_ 
     "J1:J2"), CopyToRange:=extractto, Unique:=False 

End Sub 

需要帮助的,这是应该运行一个先进的过滤器并粘贴结果在新创建的片材,在选择的原始表中有数据,从A1到G11

+1

当您添加新工作表时,它将变为活动状态,以便您的AF线引用错误的工作表。您需要重新激活原始工作表,或者更好地添加工作表参考。 – SJR

+0

我注意到它并将其设置为'Sub advnextract() Sheets.Add(Before:= ActiveSheet).Name =“Resultado” 设置extractto = ThisWorkbook.Worksheets(“Resultado”)。Range(“A5: G5 “) 随着工作表(” Hoja1 “) 范围(” A1:G11" )AdvancedFilter动作:= xlFilterCopy,CriteriaRange:=范围(_ “J1:J2”),CopyToRange:= extractto,独特之处: = False End With End Sub' 仍然不能正常工作 –

+0

哎哟,在评论中张贴多行代码是无望的恐惧。 – SJR

回答

1

正如在注释中规定,工作表的创建会导致在获得焦点。另外你需要将标题复制到片这样的Excel知道放在哪里值:

Sub advnextract() 
Dim ws As Worksheet 
Set ws = ActiveSheet 
Dim rng As Range 
Dim extractto as range 

Set rng = Selection 'It is better to set an actual range instead of Selection. 
        'Also Selection must have at least 7 columns or this will error. 
        'It also needs to include the column headers in the Selection. 
Sheets.Add(Before:=ActiveSheet).Name = "Resultado" 

Set extractto = ThisWorkbook.Worksheets("Resultado").Range("A5:G5") 
extractto.Value = rng.Rows(1).Value 

    rng.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=ws.Range(_ 
     "J1:J2"), CopyToRange:=extractto, Unique:=False 

End Sub 
+1

当然你也应该检查你的“Resultado”表是否已经存在。 – Jibato

+0

仍然在这一行中产生错误9 '设置extractto = ThisWorkbook.Worksheets(“Resultado”)。Range(“A5:G5”)' –

+0

不知道为什么,它适用于我没有问题。 –

0

摸索与一些见解这里有些逻辑后,最后的结果

Sub advnextract() 
Dim rng As Range 

Set rng = Selection 
Sheets.Add(Before:=Sheets("Hoja1")).Name = "Resultado" 


    rng.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets("Hoja1").Range("J1:J2"), _ 
    CopyToRange:=Sheets("Resultado").Range("A1"), Unique:=False 

    Sheets("Resultado").Activate 
    Columns("A:G").EntireColumn.AutoFit 
    Range("A1").Select 
End Sub 

我知道可以提高效率,但由于某些原因,我无法解释这是适用于我的代码。

+0

https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros –