Это весь код, который нам нужен, чтобы увидеть:
Call Module2
Call Module3
Call Module4
=)
Вы не «вызываете» модули, модули являются контейнерами для процедур и функций. То, что вы «называете», это процедуры и функции. Так что если у вас есть Sub DoSomething()
в Module5
, вы можете вызвать его так:
Module5.DoSomething
Или, если нет DoSomething
где-либо еще:
DoSomething
Так же, как вы бы вызвали VBA.Interaction.MsgBox
, как MsgBox "Hello!"
. Обратите внимание, что вам не нужно иметь ключевое слово Call
, чтобы оно работало.
Ваша Module2.SourceApprove
процедура имеет параметры. Так что вы не можете просто сделать SourceApprove
или Module2.SourceApprove
, VBA будет жаловаться, что параметр не является обязательным .
Таким образом, вы задаете параметры в списке значений через запятую:
Module2.SourceApprove "first", "second", "third", 42
Это тоже могут быть переменные.
Dim foo As Long
foo = 42
Module2.SourceApprove "first", "second", "third", foo
Подумайте об использовании значимых имен для ваших параметров - таким образом IntelliSense поможет вам узнать, какие значения предоставить. Вы также можете (должны) указать тип параметров, чтобы «first» не мог быть указан в качестве значения параметра, для которого требуется число.
Sub SourceApprove(ByVal i As Long, ByVal j As Long, ByVal k As Long, ByVal row_sum As Double)