vba elseif不会运行下一个条件

我必须创build一个用户窗体,代码不会运行下一个条件

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。

你可以简单地去像这样:

 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 

此外,我build议你不要使用End语句(谷歌它,你会看到很多原因),并使用适当的If-Then logic而不是导致End Sub

你的逻辑是错误的。 在一个If ... ElseIf ... Else ...块中,只有具有肯定条件的第一个部分才会被执行,如:

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

只有当a不是1时,才能popup“b是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