提问人:João Paulo Francisconi 提问时间:10/19/2023 更新时间:10/19/2023 访问量:46
如果/或不返回 true [已关闭]
If/or not returning true [closed]
问:
好吧,这个正在提高我的血压。我有一份报告,可以检查此类订单的物流路线
ElseIf LCase(rota) = "blumenau" Then
wkdas.Cells(86, 5) = wkdas.Cells(86, 5) + 1.2
wkdas.Cells(86, 6) = wkdas.Cells(86, 6) + 1
ElseIf LCase(rota) = "itajai" Or LCase(rota) = "joinville" Then
wkdas.Cells(87, 5) = wkdas.Cells(87, 5) + 1.2
wkdas.Cells(87, 6) = wkdas.Cells(87, 6) + 1
现在,第一种情况,它只有一个物流路线城市,它运行良好,第二个案例,有两条物流路线(由于距离接近,在报告中被视为一条物流路线,但出于财政原因,我们必须在系统中保留两条路线),只是。不要。返回。真。
我不知道为什么。当代码运行时,我去检查了变量。它是“Itajai”,与(顺便说一句,我没有忘记它)进入声明。返回为 false。rota
if
LCase(rota)
Dim rota as String
我想,也许是那里有一些时髦的东西,对吧?所以我这样做了:Or
ElseIf LCase(rota) = "blumenau" Then
wkdas.Cells(26, 5) = wkdas.Cells(26, 5) + 1.2
wkdas.Cells(26, 6) = wkdas.Cells(26, 6) + 1
ElseIf LCase(rota) = "itajai" Then
wkdas.Cells(27, 5) = wkdas.Cells(27, 5) + 1.2
wkdas.Cells(27, 6) = wkdas.Cells(27, 6) + 1
ElseIf LCase(rota) = "joinville" Then
wkdas.Cells(27, 5) = wkdas.Cells(27, 5) + 1.2
wkdas.Cells(27, 6) = wkdas.Cells(27, 6) + 1
它没有用。它与“blumenau”和其他城市一起工作,但显然它与“itajai”有一根骨头可以挑,因为它无法识别这座城市。有没有人有比“vba讨厌这个城市”更好的理论?
答:
3赞
Shai Rado
10/19/2023
#1
我会使用 with 使您的代码更易于阅读并忽略前导和尾随空格。Trim
Select Case
Select Case Trim(LCase(rota))
Case "blumenau"
wkdas.Cells(26, 5) = wkdas.Cells(26, 5) + 1.2
wkdas.Cells(26, 6) = wkdas.Cells(26, 6) + 1
Case "itajai", "joinville"
wkdas.Cells(27, 5) = wkdas.Cells(27, 5) + 1.2
wkdas.Cells(27, 6) = wkdas.Cells(27, 6) + 1
End Select
评论
0赞
João Paulo Francisconi
10/19/2023
修剪确实有效。此时代码太大而无法更改为 Select Case,但它的编写和阅读看起来确实比普通的 if 语句好得多,谢谢!
上一个:具有多个参数的中值 IF
评论
rota
If wkdad.Cells(linha, 1) = "Cliente:" Then cliente = wkdad.Cells(linha, 2) wkpar.Cells(1, 11) = cliente rota = wkpar.Cells(1, 12)
rota