【发布时间】:2016-05-26 19:45:58
【问题描述】:
我在循环遍历我已经定义的数组以查找超过 500 的值时遇到问题。它告诉我我的下标超出范围。
这是我目前所拥有的。有人可以帮我修复第二部分,这样它就会正确地循环遍历已经建立的数组。
Sub hishSale()
Dim customers() As String
Dim sale() As String
Dim hiCustomer() As String
Dim hiSale() As String
Dim nCustomers As Integer
Dim i As Integer
Dim isOver As Integer
'capture the number of customers and sales and put them in two seperate arrays
With wsData.Range("A3")
nCustomers = Range(.Offset(1, 0), .End(xlDown)).Rows.Count
ReDim customers(nCustomers)
ReDim sale(nCustomers)
For i = 1 To nCustomers
customers(i) = .Offset(i, 0).Value
sale(i) = .Offset(i, 1).Value
Next
End With
'Loop through arrays to find sales over $500
With Range("A3")
isOver = 0
For i = 1 To nCustomers
If .Offset(i, 1).Value > 500 Then
isOver = isOver + 1
hiCustomer(isOver) = .Offset(i, 0).Value
hiSale(isOver) = .Offset(isOver, 1).Value
End If
Next
End With
'return results in columns D and E
With Range("D3")
For i = 1 To nCustomers
.Offset(i, 0) = hiCustomer(isOver)
.Offset(i, 1) = hiSale(isOver)
Next
End With
End Sub
【问题讨论】:
-
循环数组做
for lbound(customers()) to ubound(customers()) -
在你的最后一个循环中,也许你打算使用
i来索引到hiCustomer和hiSale?你正在使用isOver,此时它的值是固定的 -
您需要准确指出哪一行有错误...
-
您似乎不喜欢这些answers。他们怎么了?这次你要给那些愿意花时间解决你在这里提出的问题的人一些反馈吗?
-
有问题的行是:
With Range("D3") For i = 1 To nCustomers .Offset(i, 0) = hiCustomer(isOver) .Offset(i, 1) = hiSale(isOver) Next End With.Offset(i, 0) = hiCustomer(isOver)--- 给我一个错误