VBA - 用于创建n乘m矩阵的函数

lb9*_*b90 3 excel vba matrix

我目前正在使用数组和循环,我正在尝试编写一个函数,它将输出一个数字为{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
Run Code Online (Sandbox Code Playgroud)

它回来了#VALUE.我不明白为什么.

我让它在一个点上工作(创建一个3x3矩阵),使它成为一个不接受任何变量的函数,然后通过以下方式初始化矩阵数组:

Dim matrix(1 to 3, 1 to 3) As Integer
Run Code Online (Sandbox Code Playgroud)

用3s 替换nmfor循环.

所以我猜变量nm导致问题,但不知道为什么.

Jas*_*ner 5

数组声明必须是静态的(其中边界由硬编码值定义); 但是您可以使用该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)
Run Code Online (Sandbox Code Playgroud)

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

ReDim Preserve matrix(n, m) ' Keep any existing values in their respective indexes.
Run Code Online (Sandbox Code Playgroud)