Модуль вызова с несколькими входами - PullRequest
0 голосов
/ 30 сентября 2018

Я пытался найти решение этой проблемы, но не смог.

В общей форме:

Module1

Sub Source()
Call Module2.Run
End Sub

Module2

Sub Run()
Value = 10
     Some code which uses Value as input
End Sub

Я хочу иметь возможность определить несколько значений в Module1, а затем запустить Module2.Run () для каждого значения.

Module1

Sub Source()
Value = 10, 20, 30
Call Module2.Run (10)
Call Module2.Run (20)
Call Module2.Run (30)
End Sub

Module2

Sub Run()
Value = Input from Module1.Source()
     Some code which uses Value as input
End Sub

Или что-то в этом роде.Любой вклад будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Вы можете создать массив, заполнить его и передать в качестве аргумента.Избегайте использования имен, таких как Source и Run, которые уже используются в Excel;.

Option Explicit
Sub Sour()
    Dim arr_1d() As Variant
    arr_1d = Array("val1", "val2", "val3")
    Dest arr_1d
End Sub

Sub Dest(arr_1d() As Variant)
    Dim y As Long
    For y = LBound(arr_1d) To UBound(arr_1d)
      Debug.Print arr_1d(y)
    Next
End Sub
0 голосов
/ 30 сентября 2018

Вы можете передавать параметры через аргументы, например, так:

Sub Sub1 ()
    Dim myVal as Long
    myVal = 1000
    Sub2 (myVal) 'The "Call" is not necessary
End Sub


Sub Sub2 (myVal as Long) 'This sub requires an input to run (myVal)
    MsgBox myVal
End Sub
...