我目前正在使用数组和循环,并尝试编写一个函数,该函数将输出一个 n × m 数组(矩阵),其中数字为 {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) = x
x = (x + 1)
Next j
Next i
createMatrix = matrix
End Function
它返回#VALUE
。我不明白为什么。
我让它在某一时刻工作(创建一个 3x3 矩阵),方法是使其成为一个不带任何变量的函数,然后通过
初始化矩阵数组Dim matrix(1 to 3, 1 to 3) As Integer
将 for 循环中的 n
和 m
替换为 3s。
所以我猜测变量 n
和 m
导致了问题,但不知道为什么。
最佳答案
数组声明必须是静态的(其中边界由硬编码值定义);但是您可以使用 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.
关于excel - VBA - 创建 n × m 矩阵的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27788623/