Excel多个if语句运行多个宏

时间:2018-09-24 13:10:42

标签: excel vba excel-vba statements

我在Excel中有几个对象,并且正在使用macro1,macro2和macro3导出它们。我使用“ mainmacro”来运行所有过程。 我也有复选框(表单控件)来选择应导出的对象。因此,如果选中了复选框1,则如果未选中,则在单元格B1中具有“ TRUE”,那么在B1中则为“ FALSE”。与复选框2-> B2,复选框3-> B3相同。

如果单元格B1中的值为“ TRUE”,则主宏运行macro1,如果B1中的值为“ FALSE”,则不执行任何操作。 如果B2为“ TRUE”,则主宏运行macro2,如果B2为“ FALSE”,则无任何反应。 如果B3为“ TRUE”,则主宏运行macro3,如果B3为F“ FALSE”,则无任何反应。

我所有的宏都应独立运行。因此,如果我选择B1和B2为“真”(通过使用复选框),则需要运行macro1和macro2,而不是macro3。所有组合均相同。运行“ TRUE”值,并跳过“ FALSE”。 我的代码无法正常运行,因为它运行的是前两个语句,而不是最后一个。可能是什么问题?

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 :(得分:0)

关闭您的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

替代方法,因为您的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