Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: ---> Neu: Office 2010 Forum <-
Computer und Logik?!?!?
zurück: Frage zu: Collection und user defined types weiter: Mit Makro PDF-Textfelder ausfüllen 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, 09: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, 10: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, 10: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, 10: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, 10: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, 10: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, 11: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, 11: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, 11: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, 13: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): Makro funktioniert nach Neustart des Computer nicht mehr 3 Justmicha 76 27. Jan 2010, 13: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 235 21. Okt 2009, 15: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 165 23. Mai 2009, 08:18
Kaltenstein Computer stürzt bei Excel 2007 ab
Keine neuen Beiträge Excel VBA (Makros): Auswertung von boolschen Logik-(Kreuz?)-Tabellen 4 Spakko 990 13. Feb 2009, 13:39
Spakko Auswertung von boolschen Logik-(Kreuz?)-Tabellen
Keine neuen Beiträge Excel Hilfe: Es scheitert schon an der einfachen Mathematik/Logik 7 kugelschreiber 151 24. Nov 2008, 17:21
silex1 Es scheitert schon an der einfachen Mathematik/Logik
Keine neuen Beiträge Excel VBA (Makros): ComboBox Logik 3 Gast 167 10. Nov 2008, 21:29
Gast ComboBox Logik
Keine neuen Beiträge Excel VBA (Makros): Computer im Netzwerk anpingen und eingeschaltete Anzeigen 32 ChristopRichter 8073 09. Jun 2008, 08:42
Gast Computer im Netzwerk anpingen und eingeschaltete Anzeigen
Keine neuen Beiträge Excel Formeln: "Beschränkungen auf diesem Computer" - Links in Of 0 Weltenreiter 161 29. Feb 2008, 12: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 440 13. Jun 2007, 15:56
Bobby Schleifen Logik problem ! komm einfach nicht drauf !?
Keine neuen Beiträge Excel VBA (Makros): nur bestimmte Tabelleneinträge kopieren Scheitert an Logik 2 Dana_Fox 378 07. Jun 2007, 11:14
Dana_Fox nur bestimmte Tabelleneinträge kopieren Scheitert an Logik
Keine neuen Beiträge Excel Formeln: Fuzzy Logik 3 ChristianM 369 28. März 2007, 10:25
Gast Fuzzy Logik
Keine neuen Beiträge Excel VBA (Makros): Problem: 80% Logik, 20% Technik 6 nickchanger 334 19. März 2007, 15:20
nickchanger Problem: 80% Logik, 20% Technik
 

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