Option Base 1
Sub Sort_Max_Min()
Dim i, j As Integer
Dim arrayOne As Variant
Dim temp As Variant
ReDim arrayOne(15)
arrayOne = Range("C2:C16")
For i = 1 To 14
For j = 1 To 14
If arrayOne(j) < arrayOne(j + 1) Then
temp = arrayOne(j)
arrayOne(j) = arrayOne(j + 1)
arrayOne(j + 1) = temp
End If
Next j
Next i
Range("D2:D16") = arrayOne
End Sub
所以我将这个小代码放到我试图从最大值到最小值排序15个值的地方。我在单元格C2:C16中有随机整数值。我收到的&#34;下标超出范围错误&#34;我似乎无法接受,但我不认为我的数组索引超出范围。
还有更好的方法来做到这一点。我不认为让i和j从1到14变得最有效。请帮忙!
(顺便说一句,我在另一个更大的代码中使用它,这就是为什么我有变种而不仅仅是整数...我不认为这很重要。我只想把它弄下来但我仍然是新的vb无论如何; _;)
答案 0 :(得分:1)
您的越界问题是因为工作表中的列默认为多维数组
Sub Sort_Max_Min()
Dim i, j As Integer
Dim arrayOne As Variant
Dim temp As Variant
arrayOne = Range("C2:C16")
For i = 1 To 13
For j = 1 To 13
If arrayOne(j, 1) < arrayOne(j + 1, 1) Then
temp = arrayOne(j,1)
arrayOne(j, 1) = arrayOne(j + 1, 1)
arrayOne(j + 1, 1) = temp
End If
Next j
Next i
Range("D2:D16") = arrayOne
End Sub
我运行此代码并在0秒内执行。不错,但我相信有一种更简单的排序方式。我仍然在学习和尝试不同的排序技术,所以我到目前为止并不是专家
答案 1 :(得分:0)
j = 14
时你超出了范围,因为你的j+1 = 15
超出了范围。
是的,有更好的方法可以做到;) 继续努力。