Excel 访问VBA传递函数中的多维数组
Access 2013 32位:Win 7 64位 试过了:没有用 (如果你能回答这个问题,你也许能回答那个问题,但它们有点不同) 我的计算实际上比简单的加法复杂得多,而且我的数组动态地很大(x,5)Excel 访问VBA传递函数中的多维数组,excel,ms-access,multidimensional-array,vba,Excel,Ms Access,Multidimensional Array,Vba,Access 2013 32位:Win 7 64位 试过了:没有用 (如果你能回答这个问题,你也许能回答那个问题,但它们有点不同) 我的计算实际上比简单的加法复杂得多,而且我的数组动态地很大(x,5) 按照上面所示的方式进行调试会填充myArray,但调试时会显示,当我将鼠标悬停在函数调用中包装的myArray上时,它会出错,然后再进入函数关键是CalculateLastColofArray(myArray()),因为我在myArray()参数中包含了括号,它正在查找单个值,不把数组作为一个整体
按照上面所示的方式进行调试会填充myArray,但调试时会显示,当我将鼠标悬停在函数调用中包装的myArray上时,它会出错,然后再进入函数关键是
CalculateLastColofArray(myArray())
,因为我在myArray()参数中包含了括号,它正在查找单个值,不把数组作为一个整体。
将此行更改为CalculateLasClofarray(myArray)
解决了我的问题
它总是很小的…您可以将多维数组作为参数传递 您还可以将函数的结果分配给数组变量,但是该变量必须声明为动态数组(因此不能在声明行中指定其维度) 此外,代码中还有一些其他错误。以下是正确的版本:
Sub CreateArray()
'Dim myArray(1 To 10, 1 To 5) As Variant
Dim myArray() As Variant
ReDim myArray(1 To 10, 1 To 5)
'Code that assigns values to (1 to 10, 1 to 4)
myArray = CalculateLastColofArray(myArray)
'Do stuff with full array
End Sub
Function CalculateLastColofArray(calcArray() As Variant) As Variant()
For i = LBound(calcArray) To UBound(calcArray)
calcArray(i, 5) = calcArray(i, 1) + calcArray(i, 3)
Next i
CalculateLastColofArray = calcArray
End Function
您尚未将参数
calcArray
声明为数组。试试函数CalculateLastColofArray(calcArray())
嘿,斯科特,谢谢你的回答-这就是问题所在,但它在过程的另一端--myArray()被读取为单个变量,而不是数组myArray,我必须将myArray()对myArray的调用更改为正确。不管怎样,问题都是。。。如果你按照我的建议或你所做的去做,两种方法都会奏效。基本上,你试着把一个苹果称为橘子,你需要让它们都工作:)只是觉得它值得注意,所以你不认为它只能是一种方式。
Sub CreateArray()
'Dim myArray(1 To 10, 1 To 5) As Variant
Dim myArray() As Variant
ReDim myArray(1 To 10, 1 To 5)
'Code that assigns values to (1 to 10, 1 to 4)
myArray = CalculateLastColofArray(myArray)
'Do stuff with full array
End Sub
Function CalculateLastColofArray(calcArray() As Variant) As Variant()
For i = LBound(calcArray) To UBound(calcArray)
calcArray(i, 5) = calcArray(i, 1) + calcArray(i, 3)
Next i
CalculateLastColofArray = calcArray
End Function