2015-10-01 194 views
1

我有一個數組,應該爲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) 
+0

只有常量可以在VBA中的子或函數之外定義。使用具有返回類型變體的公共函數將取代上面的內容。 –

回答

0

也終於得到了解決,

爲@ASH建議但幾乎沒有扭曲:

在「ThisWorkbook」模塊

Sub Workbook_Open() 
    Aone(1) = 0.47589 
    Aone(2) = 0.23795 
    Aone(3) = 0.16656 
    Aone(4) = 0.16656 
    Aone(5) = 0.03569 
    Aone(6) = 0.04759 
    Aone(7) = 0.00119 
    Aone(8) = 0.00119 
    Aone(9) = 0.00119 

謝謝大家

0

在模塊模塊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 
+0

不幸的是,@ A.S.H仍然得到一個錯誤 – ygaft

+0

沒問題,還有更好的方法來做到這一點,我正在準備。 –

+0

@ygaft編輯後的答案將爲您提供索引從0到8的答案。如果您想要範圍1到9,則可以將其設置爲Aone = ar(idx - 1)。 –