Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba I';m获取的下标超出范围(错误9)_Vba_Excel - Fatal编程技术网

Vba I';m获取的下标超出范围(错误9)

Vba I';m获取的下标超出范围(错误9),vba,excel,Vba,Excel,下面的代码不工作,我得到的下标超出范围(错误9) 需要帮助这是为了运行高级过滤器并将结果粘贴到新创建的工作表中,选择中的原始表包含从A1到G11的数据,如注释中所述,工作表的创建使其获得焦点。您还需要将标题复制到工作表中,以便excel知道将值放在何处: Sub advnextract() Dim ws As Worksheet Set ws = ActiveSheet Dim rng As Range Dim extractto as range Set rng = Selection 'I

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


需要帮助这是为了运行高级过滤器并将结果粘贴到新创建的工作表中,选择中的原始表包含从A1到G11的数据,如注释中所述,工作表的创建使其获得焦点。您还需要将标题复制到工作表中,以便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

经过反复试验和对某些逻辑的深入了解,这里是最终结果

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

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

当您添加新的工作表时,它会变为活动状态,因此您的AF行引用了错误的工作表。您需要重新激活原始工作表,或者更好地添加工作表引用。我确实注意到了这一点,并将其转换为
Sub advnextract()Sheets.add(Before:=ActiveSheet)。Name=“Resultado”Set extracto=thishworkbook.worksheet(“Resultado”).Range(“A5:G5”)和工作表(“Hoja1”)Range(“A1:G11”).AdvancedFilterAction:=xlFilterCopy,CriteriaRange:=Range(“J1:J2”),CopyToRange:=extractto,Unique:=False End With End Sub
仍不起作用。恐怕,在注释中发布多行代码是没有希望的。这不是严格的重复,但依赖
Active
选择是非常容易出错的,请参阅:当然,您还应该检查您的“Resultado”工作表是否已经存在。仍然在这一行中获取错误9
Set extracto=thishworkbook.Worksheets(“Resultado”).Range(“A5:G5”)
请单击答案旁边的复选标记,将其标记为正确@汤姆鲁伊斯
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