Kezdőoldal » Számítástechnika » Programozás » Visual Basic, Select Case...

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?

Figyelt kérdés

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



2014. ápr. 5. 14:21
 1/2 anonim ***** válasza:

É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

2014. ápr. 5. 17:17
Hasznos számodra ez a válasz?
 2/2 A kérdező kommentje:

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 ...

2014. ápr. 13. 21:53

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!