错误:没有否则,如果

问题描述:

我试图建立一个费用VS收入Excel和得到这个恼人的错误 “没有别的,如果” 我去不同的论坛等,但不能得到答案 - 这是驾驶我疯了错误:没有否则,如果

有点解释:我要过一张桌子,我有一张名为“数据”,如果我发现一个单元格不是空白或没有“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 

在VB中THEN后必须去一个新的生产线,否则IF被隐式关闭。

可以在故有此另一个问题比较:

VBA: Else without If Error

+1

+1为了澄清,你可能要改变“implitely”,这听起来象是粗鲁的,以“含蓄”。 –

+0

感谢您的支持 – mucio

查找违规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