在 Excel VBA 中反转数组

Wal*_*hez 3 arrays excel vba

我有以下代码,它基于它应该工作的逻辑。

我希望它是 (4,3,2,1),但在循环结束时我得到 t=(4,3,3,4)

Sub try()

  Dim t As Variant

  t = Array(1, 2, 3, 4)
  a = UBound(t)

  For k = 0 To a
    t(k) = t(a - k)
  Next k

End Sub
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Sid*_*out 5

在进行切换之前,您必须使用临时变量来存储内容,否则它将被覆盖。

这就是你正在尝试的吗?

Sub try()
    Dim t As Variant, tmp As Variant
    Dim a As Long, b As Long, i As Long

    t = Array(1, 2, 3, 4)

    a = UBound(t): b = LBound(t)

    For i = 0 To ((a - b) \ 2)
        tmp = t(i)
        t(i) = t(a)
        t(a) = tmp
        a = a - 1
    Next i

    For i = 0 To UBound(t)
        Debug.Print t(i)
    Next i
End Sub
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述