Arrays 初始化数组

Arrays 初始化数组,arrays,vba,excel,Arrays,Vba,Excel,我有一个数组,它应该在Excel的整个生命周期中保持常量值。 尝试用数字初始化数组时,出现错误“外部过程无效”: Public Aone(1 To 9) As Variant Aone = Array(0.47589, 0.23795, 0.16656, 0.16656, 0.03569, 0.04759, 0.00119, 0.00119, 0.00119) 在模块1中 Private ar As Variant Function Aone(idx As Integer) As Double

我有一个数组,它应该在Excel的整个生命周期中保持常量值。 尝试用数字初始化数组时,出现错误“外部过程无效”:

Public Aone(1 To 9) As Variant
Aone = Array(0.47589, 0.23795, 0.16656, 0.16656, 0.03569, 0.04759, 0.00119, 0.00119, 0.00119)
在模块1中

Private ar As Variant
Function Aone(idx As Integer) As Double
    On Error GoTo FillArray
    Aone = ar(idx)
    Exit Function
FillArray:
    ar = Array(0.47589, 0.23795, 0.16656, 0.16656, 0.03569, 0.04759, 0.00119, 0.00119, 0.00119)
    Aone = ar(idx)

End Function
在模块1中

Private ar As Variant
Function Aone(idx As Integer) As Double
    On Error GoTo FillArray
    Aone = ar(idx)
    Exit Function
FillArray:
    ar = Array(0.47589, 0.23795, 0.16656, 0.16656, 0.03569, 0.04759, 0.00119, 0.00119, 0.00119)
    Aone = ar(idx)

End Function

终于有了解决办法

正如@A.S.H所建议的,但没有多少扭曲:

在“ThisWorkbook”模块


谢谢大家

我们终于找到了解决方案

正如@A.S.H所建议的,但没有多少扭曲:

在“ThisWorkbook”模块


谢谢大家

好的,不管怎样,有一种更好的方法可以做到这一点,我正在准备。@yAft编辑后的答案将为您提供索引为0到8的答案。如果您想要范围从1到9,可以将其设置为Aone=ar(idx-1)。谢谢,因为我发布了您的第一个选项,有一个很好的转折:)祝您有一个美好的一天好吧,无论如何,有一个更好的方法可以做到这一点,我正在准备它。@yGate编辑后的答案将为您提供一个索引为0到8的答案。如果您想要1到9的范围,可以将其设为Aone=ar(idx-1)。谢谢,正如我所发布的,您的第一个选项很好,有一个转折:)祝您度过美好的一天只有常量可以在VBA中的子或函数之外定义。使用返回类型为variant的公共函数将替换上述内容。在VBA中,只能在子函数或函数之外定义常量。使用返回类型为variant的公共函数将替换上述内容。