none
Vergleich/Auswertung von Zahlen

    Frage

  • Hallo zusammen

    Ich habe mich lange nicht darum gekümmert, wie man Zeichen/Zahlen miteinander vergleicht. Für Texte is es mir etwas klarer nach der Lektüre von http://www.access-im-unternehmen.de/243.0.html.

    Bislang habe ich Zahlen immer so verglichen:

    Sub test()
    Dim a
    a = 5
    If a = 3 Or a = 4 Or a = 5 Then
    Stop
    End If
    End Sub


    Für Zahlen habe ich versucht, folgenden Auswertung zu machen:

    Sub test()
    Dim a
    a = 5
    If a = (3 Or 4 Or 5) Then
    Stop
    End If
    End Sub
    


    Ich will prüfen, ob a entweder 3, 4 oder 5 ergibt. Für mich unverständlich ergibt der Ausdruck '(3 Or 4 Or 5)' den Wert 7. Weshalb ist das so?

    Gibt es nur die im ersten Listing erstellte Methode (abgesehen von einem Select Case) oder doch noch etwas anderes, um einen Zahlwert mit mehreren Vergleichswerten zu vergleichen?

    Was muss sonst noch bei Vergleichen berücksichtigt werden?

    Schon 'mal im Vorab Danke für Eure Rückmeldungen

     


    Danke und Gruss Thomas
    Donnerstag, 27. Oktober 2011 21:48

Antworten

  • Ich will prüfen, ob a entweder 3, 4 oder 5 ergibt. Für mich unverständlich ergibt der Ausdruck '(3 Or 4 Or 5)' den Wert 7. Weshalb ist das so?


     

    Hallo Thomas

    3 = 0x00000011
    4 = 0x00000100
    5 = 0x00000101

    Bitweise Oder verknüpft (genau das macht der Ausdruck):

    7= 0x00000111

    Du kannst neben Select Case auch If ElseIf benutzen.

    Select Case a
        Case 3, 4, 5: ' mache irgendwas
        Case Else: ' mache was anderes
    End Select
    


    Die If Überprüfungen stehen in deinem ersten Beispiel schon korrekt.

    Bei Vergleichen mußt Du berücksichtigen dass Du nun gleiche Typen gegenüberstellen kannst.

     

    Dim strText As String
    Dim intZahl As Integer
    
    ' Das geht nicht!!!
    If strText = intZahl Then
    
    End If
    
    ' Also Umwandeln sofern es Sinn macht, dann geht es
    If strText = CStr(intZahl) Then
    
    End If
    
    


    Gruß Thomas

     

     

     



    Freitag, 28. Oktober 2011 09:12

Alle Antworten

  • Ich will prüfen, ob a entweder 3, 4 oder 5 ergibt. Für mich unverständlich ergibt der Ausdruck '(3 Or 4 Or 5)' den Wert 7. Weshalb ist das so?


     

    Hallo Thomas

    3 = 0x00000011
    4 = 0x00000100
    5 = 0x00000101

    Bitweise Oder verknüpft (genau das macht der Ausdruck):

    7= 0x00000111

    Du kannst neben Select Case auch If ElseIf benutzen.

    Select Case a
        Case 3, 4, 5: ' mache irgendwas
        Case Else: ' mache was anderes
    End Select
    


    Die If Überprüfungen stehen in deinem ersten Beispiel schon korrekt.

    Bei Vergleichen mußt Du berücksichtigen dass Du nun gleiche Typen gegenüberstellen kannst.

     

    Dim strText As String
    Dim intZahl As Integer
    
    ' Das geht nicht!!!
    If strText = intZahl Then
    
    End If
    
    ' Also Umwandeln sofern es Sinn macht, dann geht es
    If strText = CStr(intZahl) Then
    
    End If
    
    


    Gruß Thomas

     

     

     



    Freitag, 28. Oktober 2011 09:12
  • Hallo Thomas

    Danke für die Antwort.


    Danke und Gruss Thomas
    Mittwoch, 2. November 2011 08:19