VBA中有多个IF ELSE

我试图构build通过一系列If语句来评估电子表格中4个下拉列表的内容的代码。

但是,当我使用下面的代码,我只是得到一个错误说

如果没有结束IF,则块IF

尽pipe尝试很多替代品似乎无法摆脱。

道歉的代码长度在这里,但觉得有必要说明我正在努力完成!

 Sub GOClick() Worksheets("Dashboard").Select If Worksheets("Dashboard").Range("B3") = "National Gallery" And Worksheets("Dashboard").Range("B4") = "Unframed" And Worksheets("Dashboard").Range("B7") = "Product Costings" And Worksheets("Dashboard").Range("B5") = "N/A" And Worksheets("Dashboard").Range("B6") = "N/A" Then Worksheets("(7b)").Activate Range("A8:F23").Copy Worksheets("Dashboard").Activate Range("D11").PasteSpecial xlPasteAll Else: If Worksheets("Dashboard").Range("B3") = "N/A" And Worksheets("Dashboard").Range("B4") = "N/A" And Worksheets("Dashboard").Range("B7") = "Product Costings" And Worksheets("Dashboard").Range("B5") = "N/A" And Worksheets("Dashboard").Range("B6") = "Inkjet" Then Worksheets("(1)").Activate Range("A5:G69").Copy Worksheets("Dashboard").Activate Range("D11").PasteSpecial xlPasteAll Else: If Worksheets("Dashboard").Range("B3") = "N/A" And Worksheets("Dashboard").Range("B4") = "N/A" And Worksheets("Dashboard").Range("B7") = "Product Costings" And Worksheets("Dashboard").Range("B5") = "N/A" And Worksheets("Dashboard").Range("B6") = "Xerox" Then Worksheets("(1)").Activate Range("A5:I101").Copy Worksheets("Dashboard").Activate Range("D11").PasteSpecial xlPasteAll Else: If Worksheets("Dashboard").Range("B3") = "Wholesale" And Worksheets("Dashboard").Range("B4") = "Ready to Hang" And Worksheets("Dashboard").Range("B7") = "Product Costings" And Worksheets("Dashboard").Range("B5") = "N/A" And Worksheets("Dashboard").Range("B6") = "N/A" Then Worksheets("(3a)").Activate Range("A5:S105").Copy Worksheets("Dashboard").Activate Range("D11").PasteSpecial xlPasteAll Else: MsgBox ("No Data") End If End Sub 

这里是更正的代码,所有那些丑陋无用的Activate删除,和正确的缩进。 我还添加了一个With子句,使其更快,更短。

 Sub GOClick() With Worksheets("Dashboard") If .Range("B3") = "National Gallery" And _ .Range("B4") = "Unframed" And _ .Range("B7") = "Product Costings" And _ .Range("B5") = "N/A" And _ .Range("B6") = "N/A" Then Worksheets("(7b)").Range("A8:F23").Copy .Range("D11").PasteSpecial xlPasteAll ElseIf .Range("B3") = "N/A" And _ .Range("B4") = "N/A" And _ .Range("B7") = "Product Costings" And _ .Range("B5") = "N/A" And _ .Range("B6") = "Inkjet" Then Worksheets("(1)").Range("A5:G69").Copy .Range("D11").PasteSpecial xlPasteAll ElseIf .Range("B3") = "N/A" And _ .Range("B4") = "N/A" And _ .Range("B7") = "Product Costings" And _ .Range("B5") = "N/A" And _ .Range("B6") = "Xerox" Then Worksheets("(1)").Range("A5:I101").Copy .Range("D11").PasteSpecial xlPasteAll ElseIf .Range("B3") = "Wholesale" And _ .Range("B4") = "Ready to Hang" And _ .Range("B7") = "Product Costings" And _ .Range("B5") = "N/A" And _ .Range("B6") = "N/A" Then Worksheets("(3a)").Range("A5:S105").Copy .Range("D11").PasteSpecial xlPasteAll Else MsgBox ("No Data") End If End With End Sub 

添加End if您的代码:

 ...... Range("D11").PasteSpecial xlPasteAll Else: MsgBox ("No Data") End If End if End Sub