2016-04-07 26 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”。 –

相关问题