VBA:反转阵列?

rit*_*its 1 vba access-vba

我怎么能反转一个充满整数的数组,例如:

[1;5;8;45;54]
Run Code Online (Sandbox Code Playgroud)

至:

[54;45;8;5;1]
Run Code Online (Sandbox Code Playgroud)

我可以使用任何内置功能吗?

我尝试过使用这种方法:

Array.Reverse(arr)
Run Code Online (Sandbox Code Playgroud)

我从工具>引用添加了Mscorlib.dll,但它显示错误:语法错误.在Array.Reverse(arr)位置.

use*_*756 9

你可以使用ArrayList类并包装它的Reverse方法:

Function ReverseArray(arr As Variant) As Variant
    Dim val As Variant

    With CreateObject("System.Collections.ArrayList") '<-- create a "temporary" array list with late binding 
        For Each val In arr '<--| fill arraylist
            .Add val
        Next val
        .Reverse '<--| reverse it
        ReverseArray = .Toarray '<--| write it into an array
    End With
End Function
Run Code Online (Sandbox Code Playgroud)

使用方式如下:

Sub main()
    Dim arr As Variant

    arr = ReverseArray(Array(1, 2, 3, 4, 5)) '<-- it returns an array of Variant/Integer with values 5,4,3,2,1        
End Sub
Run Code Online (Sandbox Code Playgroud)