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

Оператор If- Else выше должен добавить 6 и 8 недель к date1a, если условие if выполнено, и добавить 18 и 24 месяца к date1a, когда еще если условие выполнено. Когда выполняется условие ElseIf, утверждения под ним не выполняются. Кто-нибудь может взглянуть на него и найти, что может быть проблемой.Если условие ElseIf истинно, утверждения для else, если не выполняются

Спасибо,

ответ

0

Вам нужно установить значение «Date1a» для утверждения ELSEIF, потому что, когда оператор Если оцениваются как ложные, заявление 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 на самом деле «Правда»: Над End If, говоря: Else MsgBox («ElseIf ЛОЖЬ!») –

+0

Вам также может понадобиться, чтобы поставить кавычки вокруг строк значений «TDS» и «SS». Например: cbo_Loc.Value = "TDS" и cbo_Loc.Value = "SS". –

Смежные вопросы