Форум по VBA и MS Office

VBA, Excel => VBA, макросы в Excel => Тема начата: Rengame113 от 30 июля 2018, 11:02

Название: VBA Макросы: Окончание основной процедуры из другой процедуры.
Отправлено: Rengame113 от 30 июля 2018, 11:02
Как прекратить выполнение основной процедуры из процедуры?
Пример:
Код-схема
Sub макрос1 ()
    процедура1
end sub

Sub процедура1()
    if выполняется then
    продолжаю
    else ()
    end sub макроса 1
end sub
[свернуть]
Название: Re: VBA Макросы: Окончание основной процедуры из другой процедуры.
Отправлено: Администратор от 30 июля 2018, 11:23
Нужно использовать функцию вместо процедуры. Затем читаете, что возвращает функция.

Код
Sub макрос1()
    If процедура1 = False Then
        Exit Sub
    End If
End Sub

Private Function процедура1() As Boolean
    If выполняется Then
        ' продолжаю
    Else
        ' В переменной-функции в этом случае будет False.
        Exit Function
    End If
    ' Запись True в переменную-функцию.
    процедура1 = True
End Function
[свернуть]
Название: Re: VBA Макросы: Окончание основной процедуры из другой процедуры.
Отправлено: Rengame113 от 30 июля 2018, 11:50
Предложенный вами способ создает вот такую конструкцию.
В функции отрабатывается и выходит обратно в процедуру1 продолжая код. А мне надо если там ложь, то чтобы все остановилось.

Спойлер
Sub макрос1 ()
    процедура1
end sub

Sub процедура1()
    код
    функция
    код

end sub
[свернуть]
Название: Re: VBA Макросы: Окончание основной процедуры из другой процедуры.
Отправлено: Администратор от 30 июля 2018, 13:30
Процедуру1 тоже делайте функцией с типом Boolean.
Название: Re: VBA Макросы: Окончание основной процедуры из другой процедуры.
Отправлено: Rengame113 от 31 июля 2018, 08:54
Спасибо.