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循环中的n
和m
。
所以我猜想variablesn
和m
造成的问题,但不知道为什么。
数组声明必须是静态的(边界由硬编码值定义); 不过,您可以使用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