2014-10-13 2 views
-1

У меня есть n количество функций. Рассмотрим п = 10Вызов параметризованной функции из процедуры, в которой имя функции хранится в массиве

Я хранятся имена этих п функций в массиве с именем Array1

Пример: Array1 = Array ("Function_1", Function_2" , "Function_3" ........ ...., "Function_10")

Общая структура этих функций:

Функция Function_1 (TestRange в диапазоне), как Range

... Некоторый код

End Function

Когда я вызываю эту функцию с использованием индекса массива, как передать параметр TestRange?

Например:

Sub Main()

Dim MainRange в диапазоне

For i = 1 To UBound(Array1) 
    Set MainRange = Application.Run(Array1(i)) 
Next 

End Sub

Когда я пытаюсь запустить основную процедуру() Я встречая следующее сообщение об ошибке :

Ошибка времени выполнения «449»: аргумент не является обязательным

Может ли кто-нибудь помочь мне в этом?

Спасибо,

Akshat

+0

передать его в качестве второго аргумента Run. – Rory

ответ

0
Sub Main() 
    Dim arr, x 
    Dim rngIn As Range, rngOut As Range 

    arr = Array("Func1", "Func2") 
    Set rngIn = ActiveSheet.Range("A1") 

    For x = 0 To UBound(arr) 
     Set rngOut = Application.Run(arr(x), rngIn) 
     Debug.Print rngOut.Address() 
    Next x 

End Sub 

Function Func1(rng As Range) As Range 
    Set Func1 = rng.Resize(10, 1) 
End Function 

Function Func2(rng As Range) As Range 
    Set Func2 = rng.Resize(1, 10) 
End Function 
Смежные вопросы