vba数组元素删除

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语句为真,我希望能够将数组的值放在数组的末尾,并从当前位置删除该值。 正如代码所示,它只是将其添加到最后,并将数组的大小从12增加到13.我怎样才能让数组保持12的大小,仍然将值放在数组的末尾,然后将其从它的原始位置? 我不想触摸前面的数组值。 只是想把这个价值转移到最后。 例如数组(1,2,3,4,5)如果语句j在第三个循环。 数组(j)= 3结束数组应该是数组(1,2,4,5,3)

你可以使用一个像这样的助手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