2016-04-07 1 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 

L'instruction Else If- devrait ajouter au-dessus de 6 et 8 semaines à date1a lorsque la condition est remplie si, et ajouter 18 et 24 mois à date1a quand d'autre si la condition est remplie. Lorsque la condition ElseIf est remplie, les instructions qui s'y trouvent ne se produisent pas. Quelqu'un peut-il s'il vous plaît jeter un coup d'oeil et trouver quel peut être le problème.Lorsque la condition ElseIf est vrai, les déclarations pour les autres si ne se passent pas

Merci,

Répondre

0

Vous devez définir la valeur de « Date1a » pour l'instruction ElseIf, parce que lorsque l'instruction If est évaluée comme fausse, l'instruction ElseIf aura pas la valeur « Date1a » attribué. Vous pouvez le faire une des façons suivantes:

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 

ou

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 

Soit on va travailler et devrait résoudre votre problème.

+0

Salut Jay, Merci pour la réponse. J'ai essayé ces deux options. Mais, il n'a pas résolu le problème. Je le regarde en mode Debug et je vois qu'après la condition else if, le programme va directement se terminer si. Alors, manquons-nous quelque chose d'autre ici? – Abhi0609

+0

Essayez ceci juste pour voir si votre déclaration ElseIf est en fait « vrai »: Au-dessus de la fin Si, mettez: Else MsgBox (« ElseIf est FAUX! ») –

+0

Vous devrez peut-être mettre des guillemets autour des chaînes de valeur "TDS" et "SS". Par exemple: cbo_Loc.Value = "TDS" et cbo_Loc.Value = "SS". –