Как определить, был ли макрос вызван другим макросом в Excel, и выполнить код соответственно - PullRequest
0 голосов
/ 11 мая 2018

Это всего лишь пример того, что я хочу сделать. У меня есть сложный макрос, который я хочу делать по-разному в зависимости от того, был ли он вызван другим макросом или нет.

sub Example()
Call MyCode
end sub

sub MyCode()
If Called by Example GoTo SkipNextLine
Do these things
exit sub
SkipNextLine:
Do other things
end sub

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Вы можете создать скрытое имя (которое, на самом деле, не привязано к диапазону).Думайте об этом как о глобальной переменной.Разница между глобальной переменной и этим именем заключается в том, что имя сохраняется в книге при ее закрытии.Когда вы снова откроете рабочую книгу - вы можете начать использовать ее без какой-либо инициализации.В качестве бонуса это имя не будет отображаться в менеджере имен.Определение имени требуется только один раз.

Sub SetHiddenName()
    Names.Add Name:="Caller", RefersTo:="StartValue", Visible:=False
End Sub

Sub FF()
    Names("Caller").Value = "FF"
    Call SS
End Sub

Sub SS()
    Select Case [Caller]
        Case "FF": MsgBox "Called by FF" '...
        Case "ZZ": MsgBox "Called by ZZ"
    End Select
End Sub
0 голосов
/ 11 мая 2018

Простой подход заключается в использовании аргументов и параметров.

Sub Example()
    Call MyCode("Example")
End Sub

Sub Example2()
    Call MyCode("Example2")
End Sub

Sub MyCode(Origin as String)
    Select Case Origin
        Case "Example"
            'Do stuff here
        Case "Example2"
            'Do other stuff here
    End Select
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...