VBA – 用于创buildn乘mmatrix的函数

我目前正在使用数组和循环,并试图写一个函数,将输出一个n乘marrays(matrix)与数字{1,2,3,…,n * m}

我正在尝试学习一些基本的VBA代码,这纯粹是为了教育目的。

这是我所想到的:

Function createMatrix(n, m) Dim matrix(1 To n, 1 To m) As Integer x = 1 For i = 1 To n For j = 1 To m matrix(i, j) = xx = (x + 1) Next j Next i createMatrix = matrix End Function 

它返回#VALUE 。 我不明白为什么。

我得到它的工作在一个点(创build一个3×3matrix),使其成为一个函数,没有任何variables,然后初始化matrix数组

 Dim matrix(1 to 3, 1 to 3) As Integer 

用3sreplacefor循环中的nm

所以我猜想variablesnm造成的问题,但不知道为什么。

数组声明必须是静态的(边界由硬编码值定义); 不过,您可以使用ReDim语句dynamic调整它们的大小。

 ' Declare an array. ' If you want to size it based on variables, do NOT define bounds. Dim matrix() As Integer ' Resize dynamically. ReDim maxtrix(n, m) 

请注意,当您使用ReDim ,所有值都将丢失。 如果您想要保留matrix中的值,可以添加Preserve关键字:

 ReDim Preserve matrix(n, m) ' Keep any existing values in their respective indexes. 

您首先需要将数组声明为dynamic数组,然后将其重新映射到您的维度。

 Function createMatrix(n, m) Dim matrix() As Integer ReDim matrix(1 To n, 1 To m) As Integer x = 1 For i = 1 To n For j = 1 To m matrix(i, j) = x x = (x + 1) Next j Next i createMatrix = matrix End Function