2011-10-12 49 views
1

這是我寫的代碼的一小段。它似乎在最後一行中出現「如果沒有END IF」錯誤。我不能在這裏發現錯誤後,與此MSDN鏈接如果沒有結束塊如果 - VBA錯誤

If Longs > 10 & Shorts > 10 Then 
       If Longs < Shorts Then 
         Pairs = Longs 
       Else 
         Pairs = Shorts 
       End If 
    Else 
     If Longs < 10 & Shorts > 10 Then 
         Shortfall = True 
         Pairs = 10 
    Else: Shortfall = False 
         Pairs = 10 
End If    
End Sub 

任何幫助將高度讚賞

+0

這是最有可能的,因爲這直列'否則的:'唯一缺少的' End If',是否應該是'Else:Shortfall = false:Pairs = 10:End If'? – 2011-10-12 07:52:42

+1

我總是使用一個名爲「智能縮進」的免費加載項來獲得代碼的一個很好的縮進,當我繼承一些像你的可怕的代碼時。 –

+0

@i開發+1的諷刺;) – Soham

回答

1

你有3 If,但只有2 End If,在年底改變End Sub諮詢End If

如果你正確地縮進代碼,它會看到更容易:

If Longs > 10 & Shorts > 10 Then 
    If Longs < Shorts Then 
     Pairs = Longs 
    Else 
     Pairs = Shorts 
    End If 
Else 
    If Longs < 10 & Shorts > 10 Then 
     Shortfall = True 
     Pairs = 10 
    Else 
     Shortfall = False 
     Pairs = 10 
    End If    
' missing End If 
End Sub 
+0

感謝它的工作。如果[if語句] else if [語句] ... else [其餘],我正在用C類型的方法工作。所以給它的最後一個優先級,而它實際上是一個嵌套的Else。 – Soham

0

變化
Else: Shortfall = False

Else 
    Shortfall = False 
    Pairs = 10 
end if 
2

更改

Else 
    If Longs < 10 & Shorts > 10 Then 

ElseIf Longs < 10 & Shorts > 10 Then 

這樣,你沒有不必要的嵌套If結構,而只是增加了額外的條件,你的外If結構。

像這樣:

If Longs > 10 & Shorts > 10 Then 
    If Longs < Shorts Then 
     Pairs = Longs 
    Else 
     Pairs = Shorts 
    End If 
ElseIf Longs < 10 & Shorts > 10 Then 
    Shortfall = True 
    Pairs = 10 
Else 
    Shortfall = False 
    Pairs = 10 
End If    

哎呀,你甚至可以離開這個完整的,即使它是相當難看:

Else: Shortfall = False 
       Pairs = 10 
相關問題