2015-10-01 3 views
1

У меня есть массив, который должен содержать постоянные значения для всей жизни Excel. я получаю ошибку «Invalid вне процедуры» в то время как я пытаюсь инициализировать мой массив с номерами:Инициализирующий массив

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

В модуле Module1

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). –

Смежные вопросы