作者:亲爱的jackvan叔叔 | 来源:互联网 | 2023-05-28 12:00
我目前正在使用数组和循环,我正在尝试编写一个函数,它将输出一个数字为{1,2,3,...,n*m}的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) = x
x = (x + 1)
Next j
Next i
createMatrix = matrix
End Function
它回来了#VALUE
.我不明白为什么.
我让它在一个点上工作(创建一个3x3矩阵),使它成为一个不接受任何变量的函数,然后通过以下方式初始化矩阵数组:
Dim matrix(1 to 3, 1 to 3) As Integer
用3s 替换n
和m
for循环.
所以我猜变量n
并m
导致问题,但不知道为什么.
1> Jason Faulkn..:
数组声明必须是静态的(其中边界由硬编码值定义); 但是您可以使用该ReDim
语句动态调整它们的大小.
' 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.