2016-04-07 32 views
0
Private Sub cbo_Loc_Change() 
    Dim Date1 As Date 
    Dim Row As Integer 
    Row = ActiveCell.Row 
    If cbo_Loc.Value = TDS Then 
    Date1a = Cells(Row, 5).Value 
    T1a = DateAdd("ww", 6, Date1a) 
    Cells(Row, 6).Formula = T1a 
    T1b = DateAdd("ww", 8, Date1a) 
    Cells(Row, 7).Formula = T1b 
    ElseIf cbo_Loc.Value = SS Then 
    T1a = DateAdd("M", 18, Date1a) 
    Cells(Row, 6).Formula = T1a 
    T2b = DateAdd("m", 6, Date1a) 
    Cells(Row, 7).Formula = T1b 
    End If 

End Sub 

elseif的條件爲true,否則上述聲明if的Else語句應在6周和8周增加date1a時,如果條件滿足,而當別人加18和24個月date1a如果條件得到滿足。當ElseIf條件滿足時,它下面的語句不會發生。任何人都可以請看看它並找出可能存在的問題。當如果沒有發生

感謝,

回答

0

您需要設置「Date1a」的價值,爲elseif的聲明,因爲當if語句爲假,則elseif的語句將未分配的值設置爲「Date1a」。你可以做到這一點通過以下方式之一:

Private Sub cbo_Loc_Change() 

Dim Date1 As Date 
Dim Row As Integer 

Row = ActiveCell.Row 

If cbo_Loc.Value = TDS Then 
    Date1a = Cells(Row, 5).Value 
    T1a = DateAdd("ww", 6, Date1a) 
    Cells(Row, 6).Formula = T1a 
    T1b = DateAdd("ww", 8, Date1a) 
    Cells(Row, 7).Formula = T1b 
ElseIf cbo_Loc.Value = SS Then 
    Date1a = Cells(Row, 5).Value 
    T1a = DateAdd("M", 18, Date1a) 
    Cells(Row, 6).Formula = T1a 
    T2b = DateAdd("m", 6, Date1a) 
    Cells(Row, 7).Formula = T1b 
End If 
End Sub 

Private Sub cbo_Loc_Change() 

Dim Date1 As Date 
Dim Row As Integer 

Row = ActiveCell.Row 
Date1a = Cells(Row, 5).Value 

If cbo_Loc.Value = TDS Then 
    T1a = DateAdd("ww", 6, Date1a) 
    Cells(Row, 6).Formula = T1a 
    T1b = DateAdd("ww", 8, Date1a) 
    Cells(Row, 7).Formula = T1b 
ElseIf cbo_Loc.Value = SS Then 
    T1a = DateAdd("M", 18, Date1a) 
    Cells(Row, 6).Formula = T1a 
    T2b = DateAdd("m", 6, Date1a) 
    Cells(Row, 7).Formula = T1b 
End If 
End Sub 

要麼一會的工夫,應該解決您的問題。

+0

嗨周杰倫,謝謝你的迴應。我嘗試了這兩種選擇。但是,它沒有解決問題。我正在調試模式下查看它,我發現在else if條件之後,程序將直接結束。那麼,我們在這裏錯過了其他的東西嗎? – Abhi0609

+0

試試這個只是爲了看看,如果你的elseif的聲明實際上是「真」: 以上的結束。如果放: 否則 MSGBOX(「elseif的是假的!」) –

+0

您可能還需要把周圍的字串值引號「TDS」和「SS」。例如:cbo_Loc.Value =「TDS」和cbo_Loc.Value =「SS」。 –

相關問題