我是这里的编程新手。
我在以下代码上收到下标超出范围的错误:
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
答案 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 Long
。 Longs
可以取更大的数字。