Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

(Wert>Wert<Wert ) in Zelle anders als in VBA

Betrifft: (Wert>Wert<Wert ) in Zelle anders als in VBA von: Urs Ingold
Geschrieben am: 13.06.2013 11:12:26

Hallo Zusammen,

Ich stelle fest, dass eine Eingabe der Art

Wert<Wert<Wert

in einer Excel Zelle anders rauskommt als in VBA
Also zum Beispiel: Excel, Eingabe in Zelle

=22<13<4 liefert FALSCH, meiner Meinung nach richtig.

VBA, Eingabe ins Direktfester

? 22<13<4 liefert aber WAHR.

(Dieselbe Aufgabe im Code formuliert führt zum selben Ergebnis)

Wird ev. 22<13 von VBA als Falsch ausgewertet und in der Folge
als 0 verwendet, also 0<4 = WAHR ?
Muss man also eine solche Abfrage in VBA immer mit OR formlieren (22<13 OR 13<4) ?

Blöde Frage am Rande: Ist dies ein grundsätzlicher Effekt beim Programmieren oder ist das in anderen Programiersprachen anders?

Vielen Dank,

Urs

  

Betrifft: AW: (Wert>Wert<Wert ) in Zelle anders als in VBA von: Rolf.dW
Geschrieben am: 13.06.2013 16:36:06

Hallo Urs,

ohne InpBox für die Variablen "z...":

Option Explicit

Sub test()

    Dim z0 As Integer, z1 As Integer, z2 As Integer, z3 As Integer
    z0 = 20
    z1 = 2
    z2 = 13
    z3 = 4
    
    If z1 < z2 And z1 < z3 Then
        MsgBox "passt!"
    Else
        MsgBox "Das war 'n Schuss in'n Ofen!"
    End If

End Sub
Gruß, Rolf


  

Betrifft: AW: (Wert>Wert<Wert ) in Zelle anders als in VBA von: Urs Ingold
Geschrieben am: 14.06.2013 09:04:18

Hallo Rolf,

Ich verstehe Deine Antwort nicht. Dass ich in VBA ein UND verwenden muss ist mir schon klar. Verwirrend ist für mich, dass die boolsche Auswertung von 22<13<4 in VBA anders herauskommt als in Excel. Hier nochmals als Code:

Sub VBALogikInUngleichung()

    Dim lngZ1 As Long
    Dim lngZ2 As Long
    Dim lngZ3 As Long
    
    lngZ1 = 22
    lngZ2 = 13
    lngZ3 = 4
    
    If lngZ1 < lngZ2 < lngZ3 Then
            
        MsgBox (lngZ1 & "<" & lngZ2 & "<" & lngZ3 & " ist laut VBA WAHR")
        
    Else
    
        MsgBox (lngZ1 & "<" & lngZ2 & "<" & lngZ3 & " ist laut VBA Falsch")
            
    End If
            
    ' und jetzt im Tabellenblatt:
    ActiveSheet.Range("A1").FormulaR1C1 = "=(22<13<4)"
    
    MsgBox (lngZ1 & "<" & lngZ2 & "<" & lngZ3 & vbCrLf & _
            "ist laut Excel Formel " & _
            ActiveSheet.Range("A1").Value)
                
End Sub
Gruss, Urs


  

Betrifft: AW: (Wert>Wert<Wert ) in Zelle anders als in VBA von: Rolf.dW
Geschrieben am: 14.06.2013 17:06:29

Hallo Urs,

meine Antwort auf deine heutige, 09:04 Uhr, scheint irgendwie verschütt gegangen zu sein. Ich gebe auf und stelle deine Frage nochmals auf offen.

Gruß, Rolf


  

Betrifft: AW: (Wert>Wert<Wert ) in Zelle anders als in VBA von: Gerd L
Geschrieben am: 14.06.2013 22:56:31

Hallo Rolf,

hilft dir dies weiter?

Sub VBALogikInGleichung()

    Dim lngZ1 As Long
    Dim lngZ2 As Long
    Dim lngZ3 As Long
    Dim bln1 As Boolean
    Dim bln2 As Boolean
    lngZ1 = 22
    lngZ2 = 13
    lngZ3 = 4
    
    
       bln1 = (lngZ1 < lngZ2)
        MsgBox (lngZ1 < lngZ2) & lngZ1 & "<" & lngZ2
        bln2 = lngZ2 < lngZ3
        MsgBox (lngZ2 < lngZ3) & lngZ2 & "<" & lngZ3
        
        MsgBox (bln1 = bln2)
        MsgBox (False = False) & "False = False"
    
End Sub
Gruß Gerd


  

Betrifft: AW: (Wert>Wert<Wert ) in Zelle anders als in VBA von: Gerd L
Geschrieben am: 14.06.2013 22:58:02

Sorry, meinte Urs!

Gruß Gerd


  

Betrifft: Letzter Versuch von: Rolf.dW
Geschrieben am: 15.06.2013 12:18:35

Hallo Urs,

deine Folge-Nachrichten beinhalten lauter "Links", warum auch immer.
Irgendwie war es mir nicht möglich, auf diese Nachrichten zu antworten. Deshalb auch hier meine AW als AW zu deinem ursprünglichen Beitrag.

So, wie ich das sehe, rechnet excel anders als VB. Excel berechnet anscheinend das Gesamtpaket deiner Formel "=22<13<4" - m.a.W. excel rechnet insgeheim =UND(22<13;22<4)

Ich vermute, dass VB schrittweise rechnet.
Also: = 22<13 ergibt Wahrheitswert '0' und da '0' kleiner ist als '4', ist im nächsten Schritt (=0<4) das Ergebnis: WAHR.

Daraus folgt: Wenn du in deinem Makro
MsgBox 22<13 And 22<4
eingibst, entspricht das Ergebnis 'FALSCH' dem Ergebnis deiner excel-Formel.

Gruß, Rolf


  

Betrifft: AW: Letzter Versuch von: Hajo_Zi
Geschrieben am: 15.06.2013 12:22:02

Hallo Rolf,

</a>
ich hätte ein Link ende gesetzt, damit der Beitrag wieder ordentlich aussieht.

GrußformelHomepage


  

Betrifft: AW: Letzter Versuch von: Rolf.dW
Geschrieben am: 15.06.2013 12:34:07

Hallo Hajo,

"</a>" sagt mir nix.
Aber wenn du dich schon einklinkst: Hast du denn den Thread wenigstens wieder auf Vordermann gebracht?

Gruß, Rolf


 

Beiträge aus den Excel-Beispielen zum Thema "(Wert>Wert<Wert ) in Zelle anders als in VBA"