2016-05-15 1 views
0

я должен создать пользовательскую форму и код не побежит следующее условиеElseIf обыкновение VBA запустить следующее условие

If name = "" Then 

    MsgBox ("please enter your name") 

    End 

ElseIf Cleanbox = False And CavBox = False And RayBox = False And FluBox = False And RootBox = False And OtherBox = False Then 


    MsgBox ("Please select a service") 


    End 
ElseIf Cleanbox = True Then 

    total = total + 35 

ElseIf CavBox = True Then 

    total = total + 150 

ElseIf RayBox = True Then 

    total = total + 85 

ElseIf FluBox = True Then 

    total = total + 50 

ElseIf RootBox = True Then 

    total = total + 225 

ElseIf OtherBox = True Then 

    total = total + other 

End If 

totaltxt.Value = total 

End Sub 

В точке, где total = total + x это обыкновение добавить следующее значение.
Так что если raybox верно общая воля = 85
но если raybox верно, а также flubox
то общее должно = 135, но он по-прежнему 85.

+0

Используйте если raybox верно и fluxboxis верно то утверждение. Я предполагаю, что условие elseif выполняется, если условие 'if' не выполняется. Поэтому вам нужно проверить оба условия, используя ключевое слово И. – newguy

ответ

2

вы могли бы просто идти, как следует:

If Name = "" Then 
    MsgBox ("please enter your name") 

ElseIf Not (Cleanbox Or CavBox Or RayBox Or FluBox Or RootBox Or OtherBox) Then 
    MsgBox ("Please select a service") 

Else 
    totaltxt.Value = -(35 * Cleanbox + 150 * CavBox + 85 * RayBox + 50 * FluBox + 225 * RootBox + othervalue * OtherBox) 
End If 

Кроме того, я бы посоветовал вам не использовать заявление End (google, и вы увидите много причин) и используйте надлежащее If-Then logic вместо этого, чтобы привести к End Sub

+0

@BaraHansen: вы прошли через это? – user3598756

2

Ваша логика просто неверна. В If ... ElseIf ... Else ... блоке только первая часть с положительным условием будет выполняться как:

If a = 1 Then 
    Debug.Print "a is 1" 
ElseIf b = 1 Then 
    Debug.Print "b is 1" 
End If 

«B является 1» только в состоянии всплывал, если не 1. просто думать о невидимой [all previous conditions are false] And [this condition].

Чтобы сделать суб работоспособным, либо использовать способ user3598756 показал или что-то вроде этого:

Dim Total As Long 

    If Name = "" Then 
    MsgBox ("please enter your name") 
    Else 
    If Cleanbox Then Total = Total + 35 
    If CavBox Then Total = Total + 150 
    If RayBox Then Total = Total + 85 
    If FluBox Then Total = Total + 50 
    If RootBox Then Total = Total + 225 
    If OtherBox Then Total = Total + other 

    If Total > 0 Then 
     totaltxt.Value = Total 
    Else 
     MsgBox ("Please select a service") 
    End If 
    End If