嗨,我完全不知道为什么其他与“退出为”将不会执行。
我各自的Excel测试单元格的值如下:
"VERS.GR.III,KENNNR.1905,V ERS.NR. 1023461“
Function DebitorVorhanden(Debitor As String) As Boolean
Dim Ausgabe As Boolean
Ausgabe = False
Dim TextLänge As Integer
TextLänge = Len(Debitor)
Dim Prüfer As Integer
For Prüfer = 1 To TextLänge
If Mid(Debitor, Prüfer, 1) = "1" Then
Dim PrüferLänge As Integer
PrüferLänge = 0
Dim Prüfer2 As Integer
For Prüfer2 = Prüfer To Prüfer + 6
If Int(Mid(Debitor, Prüfer2, 1)) = 1 Or 2 Or 3 Or 4 Or 5 Or 6 Or 7 Or 8 Or 9 Then
PrüferLänge = PrüferLänge + 1
Else
Exit For
End If
Next Prüfer2
If PrüferLänge = 7 Then
Ausgabe = True
GoTo DebitorGefunden
End If
End If
Next Prüfer
DebitorGefunden:
DebitorVorhanden = Ausgabe
End Function发布于 2021-07-27 11:35:13
If Int(Mid(Debitor, Prüfer2, 1)) = 1 Or 2 Or 3 Or 4 Or 5 Or 6 Or 7 Or 8 Or 9 Then始终为true,因此if大小写正在运行。Or 2语句返回值2,而不将两者与int(.)进行比较。价值。
一个可行的解决办法是:
dim tmp
tmp=Int(Mid(Debitor, Prüfer2, 1))
If tmp=1 or tmp=2 or tmp=3 Then 一个较短的方法是:
If InStr("123456789", Mid(Debitor, Prüfer2, 1) ) Then发布于 2021-07-27 11:51:42
Or运算符“对两个表达式执行逻辑分离。
因此,操作符两边的表达式是完全分开处理的。
这意味着要想让它发挥作用,就必须是这样的:
If Int(Mid(Debitor, Prüfer2, 1)) = 1 Or Int(Mid(Debitor, Prüfer2, 1)) = 2 Or Int(Mid(Debitor, Prüfer2, 1)) = 3....有几种解决这个问题的方法;处理数字的一种常见方法是使用选择Case语句,因为您可以像Case 1 To 9这样做
但我喜欢塞缪尔的InStr方法
https://stackoverflow.com/questions/68543810
复制相似问题