j = LBound(arrayTime)
Do Until j = UBound(arrayTime)
j = j + 1
b = b + 1
cnc = b + r
MsgBox cnc
If cnc > 7 Then
b = 0
r = 0
cnc = b + r
End If
numMins = Sheet5.Cells(cnc + 3, 2) - arrayTime(j)
If numMins < 0 Then
g = g + 1
ReArrangeArray arrayTime, j
'ReDim Preserve arrayTime(numrows - 1 + g)
'arrayTime(numrows - 1 + g) = arrayTime(j)
'MsgBox (arrayTime(numrows - 1 + g))
Else
Sheet5.Cells(cnc + 3, 2) = numMins
End If
Loop
如果if语句为true,我希望能够将数组值放在数组的末尾,并从当前位置删除该值。代码是,它只是将它添加到最后并将数组的大小从12增加到13.如何使数组保持大小为12并仍然将值放在数组的末尾,然后将其从它原来的位置?我不想触及前面的数组值。只想获取该值并将其移至最后。 例如 阵列(1,2,3,4,5) 如果声明 j在第三个循环上。 阵列(J)= 3 结束数组应该是 阵列(1,2,4,5,3)
答案 0 :(得分:1)
您可以像这样使用辅助Sub:
Sub ReArrangeArray(inputArray as Variant, indexToSwap as long)
Dim I As Long
Dim tempVal As Variant
If indexToSwap >= LBound(inputArray) And indexToSwap < UBound(inputArray) Then
tempVal = inputArray(indexToSwap)
For I = indexToSwap To UBound(inputArray) - 1
inputArray(i) = inputArray(i + 1)
Next I
InputArray(UBound(inputArray)) = tempVal
End If
End Sub
由您的主要Sub调用如下:
ReArrangeArray arrayTime, j