Visual Basic, Select Case elágazás nem ( megfelelően ) működik több paraméter és tagadás ( <> ) esetén. Ennek mi az oka?
Sziasztok a következő a probléma :
Van egy Select Case elágazásom amiben szeretném megvizsgálni hogy egy adott karakter ( "c" ) NEM szerepel a listában ( "a", "b", "c" ). Mivel szerepel ezért NEM kellene lefutnia. Viszont a Case elágazás mégis lefut !
Abban az esetben nem fut le ( tehát jó ), ha például sa értéke olyan karakter ami a lista elején áll. Esetleg van másfajta összehasonlító operátor ? vagy nem értem :D ...
Ha ugyanezt úgy vizsgálom, hogy benne van - e akkor nem probléma. értsd: ( Case "a", "b", "c" ) esetén mindegy hogy mi hol áll.
Amúgy Visual Basic Excel alatt ...
Public Function teszt1()
Dim sa As String
sa = "c"
Select Case sa
Case Is <> "a", "b", "c"
Debug.Print " tesztsor "
End Select
End Function
Én nem így csinálnám :D
Próbáld valahogy így:
Sub Main()
If teszt1("c") Then
WriteLine("Benne van")
Else
WriteLine("Nincs benne")
End If
ReadKey()
End Sub
Public Function teszt1(ByVal toTest As String)
Dim tempBool As Boolean = (toTest = "a" Or toTest = "c")
Return tempBool
End Function
04-05 17:17 - nek:
Nem rossz az ötlet, de azt nem írtam hogy lehet hogy 10 - 20 karakter közül kell eldönteni :D, arra nem akartam Or - os feltételeket beírogatni, ezért időközben a következőt találtam ki : ( de amúgy köszi a választ ! )
Public Function PCSINLIST(ByVal tstring As Variant, ByVal toperand As String, ParamArray tlist() As Variant) As Boolean
Dim sfound As Boolean: sfound = False
PCSINLIST = False
For Each spcs In tlist
Select Case toperand
Case "="
If tstring = spcs Then
PCSINLIST = True: Exit Function
End If
Case "<>":
If tstring <> spcs Then
sfound = True
ElseIf tstring = spcs Then
PCSINLIST = False: Exit Function
End If
Case ">":
If tstring > spcs Then
PCSINLIST = True: Exit Function
End If
Case "<":
If tstring < spcs Then
PCSINLIST = True: Exit Function
End If
Case ">=":
If tstring >= spcs Then
PCSINLIST = True: Exit Function
End If
Case "<=":
If tstring <= spcs Then
PCSINLIST = True: Exit Function
End If
End Select
Next spcs
If sfound = True Then
PCSINLIST = True
End If
End Function
Public Sub tesztB()
b = PCSINLIST("b", "<>", "b", "v", "x", "r", "h")
End Sub
' 'b' ekkor termeszetesen False erteket vesz fel, mert
' megtalalhato 'b' erteke
nem tudom mit gondol más, erről a megoldásról :D ...
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!