Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: ---> 4. September: Office-Treffen Rhein-Ruhr <-
Computer und Logik?!?!?
zurück: Frage zu: Collection und user defined types weiter: Excel per VBA schließen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Nicht-Profi
Einsteiger


Verfasst am:
10. Feb 2010, 10:50
Rufname:

Computer und Logik?!?!? - Computer und Logik?!?!?

Nach oben
       Version: Office 2k (2000)

Hallo,

ich bin gerade bei der Logik am Verzweifeln. Ich habe eine einfache Verzweigung:
Code:

If Ausdruck_A = Ausdruck_B Then
    Mach_dies
    Else
    Mach_das
End If

Eigentlich sollte er, wenn
- Ausdruck_A wahr ist und Ausdruck_B wahr ist -> Mach_dies ausführen
- Ausdruck_A wahr ist und Ausdruck_B falsch ist -> Mach_das ausführen
- Ausdruck_A falsch ist und Ausdruck_B wahr ist -> Mach_das ausführen
- Ausdruck_A falsch ist und Ausdruck_B falsch ist -> Mach_dies ausführen.

Tut er nur leider nicht, er führt immer Mach_dies aus....

Ich habe zum Testen mal an selbiger Stelle folgende Zeilen dazugeschrieben:
Code:

Msgbox "A = " & CStr(Ausdruck_A)
Msgbox "B = " & CStr(Ausdruck_B)
Msgbox "(A=B) = " & CStr(Ausdruck_A=Ausdruck_B)

Und was gibt unser schlaues Makro aus?
Das hier:
A = WAHR
B = FALSCH
(A=B) = WAHR

Es ist zum Verzweifeln..... wo ist hier mein Denkfehler?!?

Gruß
der Nicht-Profi
Nicht-Profi
Einsteiger


Verfasst am:
10. Feb 2010, 11:06
Rufname:


AW: Computer und Logik?!?!? - AW: Computer und Logik?!?!?

Nach oben
       Version: Office 2k (2000)

Hallo nochmal,

ich kopiere einfach mal die Phrase, wie sie bei mir Makro steht:
Code:

MsgBox "A = " & CStr(((PRItypData(intIndex).DATblnPts = True) And (PRItypData(intIndex).DATdblP = 0)) Or ((PRItypData(intIndex).DATblnPts = False) And (PRItypData(intIndex).DATdblC = 0) And (PRItypData(intIndex).DATdblF = 0)))
MsgBox "B = " & CStr(blnIsNull)
MsgBox "(A=B) = " & CStr(((PRItypData(intIndex).DATblnPts = True) And (PRItypData(intIndex).DATdblP = 0)) Or ((PRItypData(intIndex).DATblnPts = False) And (PRItypData(intIndex).DATdblC = 0) And (PRItypData(intIndex).DATdblF = 0)) = blnIsNull)
If ((PRItypData(intIndex).DATblnPts = True) And (PRItypData(intIndex).DATdblP = 0)) Or ((PRItypData(intIndex).DATblnPts = False) And (PRItypData(intIndex).DATdblC = 0) And (PRItypData(intIndex).DATdblF = 0)) = blnIsNull Then
    blnDataOK = True
    MsgBox "Ich mache DIES. Wahr."
    Else
    blnDataOK = False
    intIndex = PRIintDataNumber
    MsgBox "Ich mache DAS. Falsch."
End If

Hier kommen die Zeilen:
A = WAHR
B = FALSCH
(A=B) = WAHR
Ich mache DIES. Wahr.

Gruß,
der Nicht-Profi
Mäxchen_
Gast


Verfasst am:
10. Feb 2010, 11:25
Rufname:

AW: Computer und Logik?!?!? - AW: Computer und Logik?!?!?

Nach oben
       Version: Office 2k (2000)

Also, die MsgBox-Ausdrücke am Anfang werden nur angezeigt, aber nicht inhaltlich in der If-Else-Verknüpfung ausgewertet. Diese ist ja nur:

Code:
If ((PRItypData(intIndex).DATblnPts = True) And (PRItypData(intIndex).DATdblP = 0)) Or ((PRItypData(intIndex).DATblnPts = False) And (PRItypData(intIndex).DATdblC = 0) And (PRItypData(intIndex).DATdblF = 0)) = blnIsNull Then
    blnDataOK = True
    MsgBox "Ich mache DIES. Wahr."
    Else
    blnDataOK = False
    intIndex = PRIintDataNumber
    MsgBox "Ich mache DAS. Falsch."
End If


Man sollte besser folgende Details als Msgbox ausgeben:

DATblnPts

DATdblP

DATdblC

DATdblF

blnIsNull

um zu ermitteln, ob nicht - unabhängig von der Textausgabe der MsgBoxen - doch blnDataOK = True ist, und somit der 1. If-Zweig folgerichtig angesprungen wird. In Unkenntnis der Variablenzuweisungen kann ich das allerdings nicht beurteilen.
Nicht-Profi
Einsteiger


Verfasst am:
10. Feb 2010, 11:37
Rufname:

AW: Computer und Logik?!?!? - AW: Computer und Logik?!?!?

Nach oben
       Version: Office 2k (2000)

Hallo,

das dachte ich mir schon. Deswegen habe ich mir die Mühe gemacht, schon einmal ein Beispiel zusammenzubasteln. Als Anhang kann es runtergeladen werden.

Gruß,
der Nicht-Profi



TesteDieLogik.xls
 Beschreibung:

Download
 Dateiname:  TesteDieLogik.xls
 Dateigröße:  31.5 KB
 Heruntergeladen:  9 mal

Mäxchen_
Gast


Verfasst am:
10. Feb 2010, 11:43
Rufname:


AW: Computer und Logik?!?!? - AW: Computer und Logik?!?!?

Nach oben
       Version: Office 2k (2000)

Eben:

Teilbedingung:

(PRItypData(intIndex).DATblnPts = True) And (PRItypData(intIndex).DATdblP = 0)

wird ja erfüllt. Die zweite Teilbedingung (Or) braucht nicht mehr erfüllt zu werden, folglich wird der erste If-Verzweigungsast angesprungen. Stimmt doch.
Nicht-Profi
Einsteiger


Verfasst am:
10. Feb 2010, 11:51
Rufname:

AW: Computer und Logik?!?!? - AW: Computer und Logik?!?!?

Nach oben
       Version: Office 2k (2000)

Ich glaube nicht, weil da steht ja (sinngemäß):

If (Ausdruck_A or Ausdruck_B) = Ausdruck_C Then
DIES
Else
DAS
End If

Ausdruck_A ist wahr, wie Du schon richtig gesehen hast. Ausdruck_B ist dann, wie Du richtig schreibst, egal, weil der Gesamtausdruck (Ausdruck_A or Ausdruck_B) wahr sein muss. Nun wird dieser Gesamtausdruck aber mit Ausdruck_C verglichen. Ausdruck_C aber ist blnIsNull und blnIsNull = False! Also WAHR = FALSCH und das sollte falsch sein.... oder habe ich immer noch einen Denkfehler?

Gruß,
der Nicht-Profi
Mäxchen_
Gast


Verfasst am:
10. Feb 2010, 12:03
Rufname:

AW: Computer und Logik?!?!? - AW: Computer und Logik?!?!?

Nach oben
       Version: Office 2k (2000)

ok. Da steht sinngemäß:


If ((Ausdruck_A) or (Ausdruck_B)) = (Ausdruck_C) Then
DIES
Else
DAS
End If

Nun ist Ausdruck A = WAHR, Ausdruck B = FALSCH. Ausdruck C = FALSCH.

Wenn einer der beiden Ausdrücke A oder B falsch ist, dann ist der Vergleich mit Ausdruck C = falsch folglich wahr. Das trifft natürlich auch in umgekehrter Konstellation zu. Es heißt doch, falls Ausdruck A oder Ausdruck B dem Ausdruck C entspricht, ergibt sich WAHR.

So jedenfalls sagt es mir meine weibliche Logik.
Nicht-Profi
Einsteiger


Verfasst am:
10. Feb 2010, 12:12
Rufname:

AW: Computer und Logik?!?!? - AW: Computer und Logik?!?!?

Nach oben
       Version: Office 2k (2000)

Hallo Mäxchen,

ich wusste noch nicht, dass es "weibliche" und "männliche" Logik gibt, ich dachte bisher immer, es gibt einfach nur "Logik"... Wink

Ich verstehe das anders. Es gilt ja: Immer die Klammern zuerst! Also erst den Ausdruck in der Klammer auswerten: (Ausdruck_A or Ausdruck_B) ergibt wahr. WAHR wird dann mit FALSCH verglichen. Also WAHR = FALSCH. Wahr kann aber nicht gleich falsch sein. Also ist der Vergleich falsch.

Wenn die Klammernregeln hier nicht gelten würden, dann hätte ich ja nur über Umwegen eine Chance, den Vergleich zu machen, etwa so:
Ausdruck_D = Ausdruck_A or Ausdruck_B
"Prüfe" Ausdruck_D = Ausdruck_C

Gruß,
der Nicht-Profi
Mäxchen_
Gast


Verfasst am:
10. Feb 2010, 12:17
Rufname:

AW: Computer und Logik?!?!? - AW: Computer und Logik?!?!?

Nach oben
       Version: Office 2k (2000)

Das ist auch so, wenn du den Gesamtausdruck "Ausdruck A oder Ausdruck B" in deinem Makro nochmals mit einer Klammer umgibst. Dann werden nicht die beiden Teilausdrücke mit Ausdruck C verglichen, sondern ihr gemeinsamer Wahrheitswert. Setze einfach noch mal ein umschließendes Klammernpaar darum. Dann gehts in die Else-Verzweigung.
Nicht-Profi
Einsteiger


Verfasst am:
10. Feb 2010, 14:53
Rufname:


AW: Computer und Logik?!?!? - AW: Computer und Logik?!?!?

Nach oben
       Version: Office 2k (2000)

Hallo,

es entzieht sich zwar meiner (zugegeben männlichen Wink ) Logik, zwei Klammernpaare drumherum packen zu müssen, aber es funktioniert! Danke!

Gruß
der Nicht-Profi
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel VBA (Makros): Computer hängt nach VBA-Ausführung 4 Tom Bombadil 85 04. Jul 2010, 14:28
ransi Computer hängt nach VBA-Ausführung
Keine neuen Beiträge Excel VBA (Makros): Farbfüllung der Zellen nach Logik 4 sebastian231 59 22. Apr 2010, 13:06
sebastian231 Farbfüllung der Zellen nach Logik
Keine neuen Beiträge Excel VBA (Makros): Zellen nach Logik mit Farbe füllen 5 sebastian231 331 20. Apr 2010, 12:01
sebastian231 Zellen nach Logik mit Farbe füllen
Keine neuen Beiträge Excel VBA (Makros): Makros funktionieren auf fremdem Computer nicht 6 myUrmel 284 15. Feb 2010, 16:23
Thomas Ramel Makros funktionieren auf fremdem Computer nicht
Keine neuen Beiträge Excel VBA (Makros): Makro funktioniert nach Neustart des Computer nicht mehr 3 Justmicha 91 27. Jan 2010, 14:36
Justmicha Makro funktioniert nach Neustart des Computer nicht mehr
Keine neuen Beiträge Excel VBA (Makros): Makro kann auf anderem Computer nicht ausgeführt werden 2 styleworker 409 21. Okt 2009, 16:47
styleworker Makro kann auf anderem Computer nicht ausgeführt werden
Keine neuen Beiträge Excel Hilfe: Computer stürzt bei Excel 2007 ab 3 existence 220 23. Mai 2009, 09:18
Kaltenstein Computer stürzt bei Excel 2007 ab
Keine neuen Beiträge Excel Hilfe: Es scheitert schon an der einfachen Mathematik/Logik 7 kugelschreiber 171 24. Nov 2008, 18:21
silex1 Es scheitert schon an der einfachen Mathematik/Logik
Keine neuen Beiträge Excel Formate: Hilfe bei Excel........ Frauen und Computer 2 Guest Nina 155 18. Nov 2008, 07:53
< Peter > Hilfe bei Excel........ Frauen und Computer
Keine neuen Beiträge Excel VBA (Makros): ComboBox Logik 3 Gast 195 10. Nov 2008, 22:29
Gast ComboBox Logik
Keine neuen Beiträge Excel Formeln: "Beschränkungen auf diesem Computer" - Links in Of 0 Weltenreiter 180 29. Feb 2008, 13:25
Weltenreiter "Beschränkungen auf diesem Computer" - Links in Of
Keine neuen Beiträge Excel VBA (Makros): Schleifen Logik problem ! komm einfach nicht drauf !? 12 JeremiasP 450 13. Jun 2007, 16:56
Bobby Schleifen Logik problem ! komm einfach nicht drauf !?
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: PHP JavaScript