如果/或不返回 true [已关闭]

If/or not returning true [closed]

提问人:João Paulo Francisconi 提问时间:10/19/2023 更新时间:10/19/2023 访问量:46

问:


这个问题是由一个错别字或一个无法再重现的问题引起的。虽然类似的问题可能在这里成为主题,但这个问题的解决方式不太可能帮助未来的读者。

上个月关闭。

好吧,这个正在提高我的血压。我有一份报告,可以检查此类订单的物流路线

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。rotaifLCase(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讨厌这个城市”更好的理论?

VBA IF-语句 Excel-2016

评论

2赞 BigBen 10/19/2023
检查尾随空格?如何分配值?rota
0赞 João Paulo Francisconi 10/19/2023
它检查客户端代码并从结果中分配 rota,如下所示: wkpar.cells(1,12) 有一个 PROCV,它从另一个具有客户端注册的 excel 文件中查找来自 wkpar.cells(1,11) 客户端 ID 的路由If wkdad.Cells(linha, 1) = "Cliente:" Then cliente = wkdad.Cells(linha, 2) wkpar.Cells(1, 11) = cliente rota = wkpar.Cells(1, 12)
1赞 BigBen 10/19/2023
从单元格中读取值 - 因此请检查单元格的内容。内容可能不是你想象的那样。
0赞 João Paulo Francisconi 10/19/2023
我确实在代码运行时检查了变量,它显示它确实是“Itajai”,但使用 Trim 确实有效,所以你是对的。rota

答:

3赞 Shai Rado 10/19/2023 #1

我会使用 with 使您的代码更易于阅读并忽略前导和尾随空格。TrimSelect 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 语句好得多,谢谢!