我目前正在使用数组和循环,我正在尝试编写一个函数,它将输出一个数字为{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 替换n和mfor循环.
所以我猜变量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)
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)
| 归档时间: |
|
| 查看次数: |
16629 次 |
| 最近记录: |