VBA将数组从2D数组传递给sub

时间:2014-03-29 19:41:36

标签: arrays vba multidimensional-array

我有一个函数,用于收集用户表单中勾选的月份,其中包含复选框:

Function get_entries() As Boolean()

这将返回一个2D布尔数组(4,11),表示5 x 12个复选框,这些复选框表示从用户表单中选择的月份

在我的主要功能中:

Dim montharr() As Boolean
montharr = get_entries()

Call myfunc1(montharr(0))
Call myotherfunc(montharr(1))
Call myotherfunc(montharr(2))
Call myotherfunc(montharr(3))
Call myotherfunc(montharr(4))

我无法成功将12个元素的单个数组传递给subs。我已经尝试将项目声明为变体,但这不起作用,并且花了很多时间试图让它工作。欢迎任何想法。

1 个答案:

答案 0 :(得分:1)

这是"切片"的一种方式二维数组:

Sub ArraySlicing()

Dim arr(1 To 5, 1 To 5)
Dim slice
Dim x, y
Dim a As Application

    For y = 1 To 5
    For x = 1 To 5
        arr(y, x) = "R" & y & ":C" & x
    Next x
    Next y

    Set a = Application

    'get first "column"
    slice = a.Transpose(a.Index(arr, 0, 1))
    Debug.Print Join(slice, ", ")

    'get second "row" (note double transpose)
    slice = a.Transpose(a.Transpose(a.Index(arr, 2, 0)))
    Debug.Print Join(slice, ", ")

End Sub

Index()为您提供了一个二维数组 - (x,1)或(1,x) - Transpose()会将其转换为一维数组。