我正在努力建立费用与收入优势并得到这个恼人的错误 “否则没有” 我去了不同的论坛和其他论坛,但无法得到答案 - 这让我发疯了
一点解释:我正在查看一张名为“data”的表格,如果我发现一个非空白或没有“0”的单元格,我会继续。第一个“每个”用于类别,第二个用于子类别 - 一旦我找到一个子类别,我搜索我们在该子类别下制作的成本。我在月份表中查找他的名字在字符串CSheet中的成本 - 当我找到它们时,我将它们添加到计数器scSum。
With Worksheets("Data") For Each Mcell In Worksheets("Data").Range(.Cells(CatRow, stCatCol), .Cells(CatRow, enCatCol)).Cells '("C1:X1") expenses scSum = 0 If Mcell.Value <> 0 Then If IsEmpty(Mcell.Value) Then Exit For Else For Each eScell In Worksheets("Data").Range(.Cells(CatRow + 1, Mcell.Column), .Cells(CatRow + noSubCat, Mcell.Column)).Cells 'run on sub category 'eScell - expence category cell If IsEmpty(eScell.Value) Then Exit For Else ***'error!*** subC = eScell.Value With Worksheets(CSheet) For Each eCcell In Worksheets(CSheet).Range(.Cells(ExpMonthStRow, ExpMonthSubCol), .Cells(MonthEndRow, ExpMonthSubCol)).Cells 'run in month and look for sub category expences 'eCcell - expence cost cell If IsEmpty(eCcell.Value) Then Exit For Else If eCcell.Value = subC Then scSum = scSum + Worksheets(CSheet).Cells(eCcell.row, ExpMonthSubCostCol) End If End If Next eCcell End With End If Next eScell End If 'incomes scSum = 0 End If Next Mcell End With
答案 0 :(得分:4)
答案 1 :(得分:1)
找到违规End If
的最佳方法是Indent
您的代码。 :)
您可以通过以下方式撰写IF-Endif
。
多个语句
If <Condition> Then
<Do Something>
Else
<Do Something Else>
End If
或
If <Condition1> Then
<Do Something>
ElseIf <Condition2> Then
<Do Something Else>
Else
<Do Something Else>
End If
单一陈述
If <Condition> Then
<Do Something>
End If
以上陈述也可以写成一行
If <Condition> Then <Do Something>
在这种情况下,您不需要End If
。
上面的代码(删除其他代码以进行演示后)可以写成如下所示。我删除了额外的代码来证明我的意思。在下面的代码中,不需要以*
开头的所有行。
If Mcell.Value <> 0 Then
If IsEmpty(Mcell.Value) Then Exit For
Else
If IsEmpty(eScell.Value) Then Exit For
*Else
If IsEmpty(eCcell.Value) Then Exit For
*Else
If eCcell.Value = subC Then
scSum = scSum + Worksheets(CSheet).Cells(eCcell.Row, ExpMonthSubCostCol)
End If
*End If
*End If
*End If
End If