下标超出范围,将数据从范围移动到数组

时间:2019-06-17 15:15:03

标签: arrays excel vba range

我是这里的编程新手。

我在以下代码上收到下标超出范围的错误:

b(i) = ThisWorkbook.Sheets("trades").Range("AA & arxi +i-1:AD& arxi+i-1").Value

我认为这与语法有关,或者可能是因为我没有重新命名b(vdomada,4)吗?

无论如何,范围内的数据都不会进入数组。结果将是在数组中输入数据,然后将它们导出到另一个excel文件中(导出位未放入提供的代码中)

在此先感谢您的帮助。

Sub report()
Dim b As Variant, arxi As Integer, telos As Variant
Dim LastDayRow As Integer, vdomada As Integer, i As Integer, z As Integer
Dim LastDay As Date


Application.Workbooks("Back Office 2019.xlsx").Activate

Sheets("trades").Select
LastDayRow = Range("L" & Rows.Count).End(xlUp).Row
telos = Cells(LastDayRow, 12)
arxi = InputBox("Please enter the row for the start of the week")
vdomada = LastDayRow - arxi
ReDim b(vdomada) As Variant
For i = 1 To vdomada

b(i) = ThisWorkbook.Sheets("trades").Range("AA & arxi +i-1:AD& arxi+i-1").Value
Next i

End Sub

3 个答案:

答案 0 :(得分:1)

几件事可能会有所帮助。我将删除以下内容-

ReDim b(vdomada) As Variant
For i = 1 To vdomada

b(i) = ThisWorkbook.Sheets("trades").Range("AA & arxi +i-1:AD& arxi+i-1").Value
Next i

并替换为-

b = ThisWorkbook.Sheets("trades").Range("AA" & arxi & ":AD" & vdomada).Value

看看是否有帮助。

我认为您的错误源自给Range提供一些它不知道要做什么的东西,以及试图将2D范围分配给已定义为1D的数组。在这种情况下,我认为您不需要重新数组。

祝你好运。

答案 1 :(得分:1)

With ThisWorkbook.Sheets("UST trades")
    b(i) = .Range(.Cells(arxi + i - 1, "AA"), .Cells(arxi + i - 1, "AD")).Value
End With

答案 2 :(得分:0)

如何避免.Activate

With Workbooks("Back Office 2019.xlsx").Sheets("trades")
    LastDayRow = .Range("L" & Rows.Count).End(xlUp).Row
    telos = .Cells(LastDayRow, 12)
    arxi = InputBox("Please enter the row for the start of the week")
    vdomada = LastDayRow - arxi
End With

此外,采用整数(而不是小数)的变量最好声明As LongLongs可以取更大的数字。