Excel несколько операторов if для запуска нескольких макросов - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть несколько объектов в Excel, и я экспортирую их с моими macro1, macro2 и macro3.Я использую «mainmacro» для запуска всего этого процесса.У меня также есть флажки (формы элементов управления), чтобы выбрать, какие объекты должны быть экспортированы.Таким образом, если флажок 1 установлен, у меня есть «ИСТИНА» в ячейке В1, если он не отмечен, то в В1 «ЛОЖЬ».То же самое с флажком 2 -> B2, флажком 3 -> B3.

Если в ячейке B1 установлено значение «TRUE», то основной макрос запускает macro1, если B1 - «FALSE», ничего не происходит.Если B2 «TRUE», то основной макрос запускает macro2, если B2 «FALSE», тогда ничего не происходит.Если B3 равен «TRUE», то основной макрос запускает macro3, если B3 - «FALSE», то ничего не происходит.

Все мои макросы должны выполняться независимо.Поэтому, если я выберу B1 и B2, чтобы (используя флажки) «ИСТИНА», мне нужно запустить macro1 и macro2, но не macro3.То же самое со всеми возможными комбинациями.Запустите значения «ИСТИНА» и пропустите «ЛОЖЬ».Мой код не работает должным образом, поскольку он выполняет два первых оператора, но не последний.В чем может быть проблема?

Sub mainmacro()
Dim ws As Worksheet: Set ws = Sheets("MAIN")
    'declare and set your worksheet, amend as required
    If ws.Range("B1").Value = True Then
        macro1
    If ws.Range("B2").Value = True Then
        macro2
    If ws.Range("B3").Value = True Then
        macro3
    End If
    End If
    End If
End Sub

1 Ответ

0 голосов
/ 24 сентября 2018

Закройте ваши IF операторы, так как они независимы друг от друга:

If ws.Range("B1").Value = True Then
        macro1
End If

If ws.Range("B2").Value = True Then
        macro2
End If

If ws.Range("B3").Value = True Then
        macro3
End If

Alternatele, так как ваши операторы IF являются однострочными выражениями, вы можете игнорировать конец, если операторы такие:

If ws.Range("B1").Value = True Then macro1

If ws.Range("B2").Value = True Then macro2

If ws.Range("B3").Value = True Then macro3
...