Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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-运行时错误';9';:下标范围不够_Vba_Excel - Fatal编程技术网

vba-运行时错误';9';:下标范围不够

vba-运行时错误';9';:下标范围不够,vba,excel,Vba,Excel,我试图从工作表中的8个不同表中复制8个不同的范围。所以我在下面提出了这个编码。我使用union方法组合这些范围,但它返回一个 运行时错误“9”:下标超出范围 在下一行设置范围1=板材(“板材1”)。范围(“O24”) 谁能告诉我哪里做错了?我似乎看不出我的错误在哪里 Sub ONSHORE() 'Last cell in column Dim WS As Worksheet Dim LastCell As Range Dim LastCellRowNumber As Long Dim rang

我试图从工作表中的8个不同表中复制8个不同的范围。所以我在下面提出了这个编码。我使用union方法组合这些范围,但它返回一个

运行时错误“9”:下标超出范围

在下一行
设置范围1=板材(“板材1”)。范围(“O24”)

谁能告诉我哪里做错了?我似乎看不出我的错误在哪里

Sub ONSHORE()

'Last cell in column
Dim WS As Worksheet
Dim LastCell As Range
Dim LastCellRowNumber As Long
Dim range1 As Range, range2 As Range, range3 As Range, range4 As Range, range5 As Range, range6 As Range, range7 As Range, range8 As Range, multipleRange As Range

Set range1 = Sheets("Sheet1").Range("O24")
Set range2 = Sheets("Sheet1").Range("AA40, AC40")
Set range3 = Sheets("Sheet1").Range("AA56, AC56")
Set range4 = Sheets("Sheet1").Range("AA72, AC72")
Set range5 = Sheets("Sheet1").Range("AA88, AC88")
Set range6 = Sheets("Sheet1").Range("AA104, AC104")
Set range7 = Sheets("Sheet1").Range("AA120, AC120")
Set range8 = Sheets("Sheet1").Range("AA130, AC130")
Set multipleRange = Union(range1, range2, range3, range4, range5, range6, range7, range8)

Set WS = Worksheets("Sheet1")

Dim wb As Workbook, wb2 As Workbook
Dim vFile As Variant
Dim i As Integer

'Set source workbook
Set wb = ActiveWorkbook

'Open the target workbook
vFile = Application.GetOpenFilename("Excel-files,*.xlsx", MultiSelect:=True)

If IsArray(vFile) Then
    For i = LBound(vFile) To UBound(vFile)
        Set wb2 = Workbooks.Open(vFile(i))

        'if the user didn't select a file, exit sub
        If TypeName(vFile) = "Boolean" Then Exit Sub

        With WS
            Set LastCell = .Cells(.Rows.Count, "D").End(xlUp)
            LastCellRowNumber = LastCell.Row + 1
        End With

        'Set selectedworkbook
        Set wb2 = ActiveWorkbook

        'Select cells to copy
        wb2.Worksheets("Sheet1").Range(multipleRange).Copy

        'Go back to original workbook you want to paste into
        wb.Activate

        'Paste starting at the last empty row
        wb.Worksheets("Sheet1").Range("D" & LastCellRowNumber).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

        'Close and save the workbook you copied from
        wb2.Save
        wb2.Close
    Next i

    Application.ScreenUpdating = True
    Application.CutCopyMode = False
End If

End Sub

我猜
表单(“Sheet1”)
不存在。它可以在
工作表(“工作表1”)
中有一个空格

没有理由合并这些范围。下面的代码与您的工会类似

设置多重语言=纸张(“纸张1”)。范围(“O24、AA40、AA56、AA72、AA88、AA104、AC120、AA130”)


我猜
表单(“Sheet1”)
不存在。它可以在
工作表(“工作表1”)
中有一个空格

没有理由合并这些范围。下面的代码与您的工会类似

设置多重语言=纸张(“纸张1”)。范围(“O24、AA40、AA56、AA72、AA88、AA104、AC120、AA130”)


当sheet1丢失时,我得到了错误9;当sheet1在范围内没有数据时,得到了错误1004。因此,您的问题的答案是sheet1缺失。

当sheet1缺失时,我得到了错误9;当sheet1在范围内没有数据时,得到了错误1004。因此,您的问题的答案是sheet1缺失。

您确定有一张名为“sheet1”的工作表吗?如果您将
Set WS=Worksheets(“Sheet1”)
的行放在这些行的上方,它是否返回错误?我按照您所说的更改了编码。它仍然返回了一个错误。这意味着您没有名为“Sheet1”的工作表,对吗?我有Sheet1。但在我把Sheet1命名为其他名称后,它就开始工作了。谢谢你确定你有一张名为“Sheet1”的表格吗?如果您将
Set WS=Worksheets(“Sheet1”)
的行放在这些行的上方,它是否返回错误?我按照您所说的更改了编码。它仍然返回了一个错误。这意味着您没有名为“Sheet1”的工作表,对吗?我有Sheet1。但在我把Sheet1命名为其他名称后,它就开始工作了。谢谢我尝试了您的代码,但它仍然会将相同的错误返回到您的代码中。您收到错误是因为没有名为
Sheet1
的工作表。我尝试了您的代码,但它仍然会将相同的错误返回到您的代码中。您收到错误是因为没有名为
Sheet1
的工作表。