将一个数组分配给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是分配Objectvariables的特殊关键字,因此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