将一个数组分配给vba中的另一个数组
在我的项目中,我和数组一起工作了很多,我想find一种方法将一个函数(数组)的返回值分配给另一个新声明的数组。 我search并find了一种方式,这表明我拆分数组,并重新join到另一个,但我想要一个更精确的方式来处理这个要求…让我们说,函数将返回值:
Public Function GetVariables() As String() Dim Vars() As String GetVariables = Vars End Function
和使用它的function:
Public Function popu() Dim Vars() As String Set Vars = GetVars() End Function
但是这给了我一个错误:
can not assign to array
我将非常感谢您的真诚帮助。
你在这里做了一些错误的事情。 首先,正如其他人在注释中指出的那样, Set
是分配Object
variables的特殊关键字,因此Set
将在这里引起错误。
接下来,你必须确保正确地分配给你的函数调用。 目前您的代码:
Public Function popu() Dim Vars() As String Set Vars = GetVars() End Function
做了四件事是错误的。
-
Vars()
不等于Vars()
。 -
GetVars()
不等于Public Function GetVariables()
-
函数调用中不应该包含空的括号。
-
数组应该声明为
Variant
。 你可以声明一个数组作为一个String()
,它创build一个string数组,但这通常是可以避免的。 另外,你可以声明你的variables为一个Variant()
但是如果你尝试返回一个空值(比如vbNullString
或者Empty
),这会导致问题。
因此,你的代码应该是:
Public Function GetVariables() As Variant Dim Variables As Variant GetVariables = Variables End Function ' Make sure your function has an explicit returntype, even if that return is variant. Public Function popu() as Variant Dim Variables As Variant Variables = GetVariables End Function
正如Paul在他的回答中所演示的那样,您的数组可以用预先定义的维度实例化,并且可以将这些值硬编码到数组中。 它绝对取决于你的应用程序,但是你会想要阅读数组的文档来理解创build它们的不同用法和方法。
作为你的函数/子的更复杂的例子:
Public Function GetVariables() As String() Dim Vars() As String ReDim Preserve Vars(2) Vars(1) = "hello" Vars(2) = "world" GetVariables = Vars End Function Public Function popu() Dim Vars() As String Dim i Vars = GetVariables() For i = 1 To UBound(Vars) Debug.Print Vars(i) Next i End Function
版画
hello world