Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1452to1456
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Laufzeitfehler 6: Überlauf

Laufzeitfehler 6: Überlauf
22.10.2015 23:43:56
Matthias
Hallo Forum,
und zwar geht es um ein Knobelrätsel einer Schulaufgabe. Gleich vornweg für die vielbeschäftigten unter Euch - dies ist kein wirkliches Problem, nur eine Verständnisfrage.
Zur Lösung der Aufgabe habe ich die Variablen a bis i als Byte deklariert, da sie jeweils nur von 1 bis 9 benötigt werden und der Typ mit 0 bis 255 mehr als ausreichend seien sollte. Das Problem dabei ist der Laufzeitfehler 6: 'Überlauf', welcher mir das Programm sofort ohne Analysemöglichkeit abbricht, daher kann ich auch keine Werte für die Variablen bestimmen um eventuell daraus etwas abzuleiten. Das Überraschende daran ist, dass 6 Variablen mit Byte zufrieden sind, jedoch c, e und g partout nicht diesen Typ fressen wollen.
Bevor jetzt jemand kommt "Na dann nutz doch Long", das weis ich selbst. Mich interessiert die Theorie dahinter um ein besseres Verständnis für VBA zu erlangen. Warum tritt dies nur bei diesen 3 Variablen auf?
Hier dazu die Wenn-Bedingung bei welcher mit das Makro sang- und klanglos flöten geht:

If (a + b - c) = 4 And (d - e + f) = 8 And (g * h - i) = 8 _
And (a + d - g) = 6 And (b * e - h) = 2 And (c + f - i) = 6 Then
https://www.herber.de/bbs/user/100984.xlsm
Nach ein bisschen mehr rumprobieren habe ich folgendes noch feststellen können:
c, e und g scheitern jeweils an beiden Gleichungen in denen sie vorkommen, ich kann mir darauf jedoch keinen Reim machen. Erst dachte ich, es liegt daran dass z.B. c subtrahiert wird, jedoch ist dies in der letzten Gleichnung nicht der Fall und i schert sich 'nen Sch*** darum, obwohl sie Byte ist. Gleiches gilt für die Multiplikation.
Das Zerlegen der Bedingung in einzelne If's für jede Gleichung macht auch keinen Unterschied.
Wäre super wenn sich einer der Spezialisten unter euch die Mühe aufsich nimmt und meine Frage beantworten kann.
vielen Dank im voraus,
Matthias M.

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 6: Überlauf
23.10.2015 01:09:58
Daniel
HI
wenn du eine Berechnung durchführst, dann benötigt VBA intern ebenfalls Variablen, um Zwischenergebnisse der Berechnung zu speichern
Der Variablentyp, welcher für diese interne Variable verwendet wird, orientiert sich am Typ der verwendeten Werte bzw Variablen.
dh wenn du Integervariablen addierst, subtrahierst oder multiplizierst, wird VBA auch die interene Zwischenvariable als Integer anlegen, gleiches natürlich bei Byte und Long.
nur bei der Divison wird aus verständlichen Gründen immer der Typ Double verwendet.
da du Bytevariablen verwendest, ist auch die Zwischenvariable vom Typ Byte, und dieser Typ kann keine negativen Zahlen verarbeiten, weil er nur von 0-255 definiert ist.
der Abbruch erfolgt, wenn d = 4 und e = 5, denn dann gibts in der zweiten Klammer mit d-e = -1 ein negatives Zwischenergebnis.
dh man muss bei der Variablendeklaration auch immer im Kopf haben, welche Berechnungen man mit den Werten durchführt und welche Ergebnisse da raus kommen können.
Btw der Datentyp Byte hat in VBA keinen Vorteil gegenüber dem Datentyp Long.
Im Gegenteil, er wird sogar langsamer verarbeitet als Long, die Verarbeitungsgeschwindigkeit entspricht dem Typ Variant.
der Type Byte bringt also nichts, ausser Ärger.
Der grund warum das so ist, liegt vermulich daran, dass wir heute 32-bit-Datenleitungen in unseren Rechnern haben, welche eine Long-Zahl in einem Prozessortakt verarbeiten können.
Die Berechnung wird nicht schneller, wenn du von den 32 bit nur 8 nutzt.
Früher auf den 8- oder 16-Bit-Rechnern war das anders. Da musste jede Long-Zahl in 2 oder 4 Pakete zerlegt werden und brauchte dann entsprechend das vielfache an Berchnungszeit.
Gruss Daniel

Anzeige
AW: Laufzeitfehler 6: Überlauf
23.10.2015 10:38:20
matthias
Vielen Dank für die verständliche Erklärung. Über zwischengespeicherte Werte habe ich mir bislang nie einen Kopf gemacht und auch das mit der Berechnungsgeschwindigkeit von Long ist mir neu. Wieder was gelernt.
Gruß Matthias

9 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige