我有这个代码,根据整数“Aa”使“products2”小写或大写。 “Aa”是一个单元格,它可以是89%到94.9999%,在这种情况下,产品应该是小写的,或者它将是95%到100%,在这种情况下它将是大写的(elseif)。如何格式化If语句以便它执行此操作?
If Aa = <89% and >94.9999% Then
Products2 = Chr(J + Asc("a"))
MsgBox "Products2 = " & Products2
ElseIf Aa = <95% to >100% Then
Products2 = Chr(J + Asc("A"))
MsgBox "Products2 = " & Products2
End If
答案 0 :(得分:4)
您需要将每个比较与And
结合起来If Aa >= .89 And Aa < .95 Then
'blah
ElseIf Aa >= .95 And Aa <= 1 Then
'blah
End If
这是这个(带括号)的逻辑等价物
If (Aa >= .89) And (Aa < .95) Then
'blah
ElseIf (Aa >= .95) And (Aa <= 1) Then
'blah
End If
但实际上我会把它写成Select语句,因为它支持范围,它更具可读性。
Select Case Aa
Case .95 To 1
'blah
Case .89 To .95
'blah
End Select
注意我已经颠倒了订单。这是在第二种情况下使用.95进行比较,而不是.949999,如果你不小心可能会错过.949999和.95之间的浮点值
但这确实忽略了其他情况。如果你的逻辑真的是任何高于95%的东西是单向的,而95%以下的东西都是另一种,那么这就更好了:
Select Case Aa
Case >= .95
'blah
Case Else
'blah
End Select
现在相当于:
If Aa >= .95 Then
'blah
Else
'blah
End If
在我看来,最后两个中的一个是最好的,因为它涵盖了所有情况。如果你不这样做,你可能会得到一个不会改变格式的边缘情况,这可能会产生误导,因为格式化可能无法反映当前的状态。