我尝试构建遍历一系列If
语句的代码,以评估电子表格本身中4个下拉列表的内容。
但是,当我使用下面的代码时,我得到一个错误说
尽管尝试了许多替代方案,但似乎无法摆脱。没有End IF的阻止IF
在这里为代码长度道歉,但感觉有必要说明我想要完成的事情!
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
答案 0 :(得分:3)
这是更正后的代码,删除了所有丑陋无用的Activate
,并进行了适当的缩进。我还添加了一个With
子句,使其更快更短。</ p>
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
答案 1 :(得分:-1)
将End if
添加到您的代码中:
......
Range("D11").PasteSpecial xlPasteAll
Else: MsgBox ("No Data")
End If
End if
End Sub