Anzeige
Archiv - Navigation
1956to1960
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

VBA: Überlauffehler bei Multiplikation

VBA: Überlauffehler bei Multiplikation
20.12.2023 15:34:50
woaschdsubb
Hallo,
Ich habe mithilfe des Forums schon so einige VBA-Probleme lösen können. Von daher vielen Dank an die fleißigen Helfer. :-)
Nun habe ich ein Problem, für das ich keine verwertbaren Lösungen / Threads gefunden habe.

Ich hab das Ganze mal aufs Wesentliche reduziert:

Private Sub test()
Dim i As Double
i = 24 * 60 * 60 '86400
End Sub

Bei mir liefert bei der Multiplikation einen Laufzeitfehler '6' - Überlauf

Ich könnte schwören dass Double ein wenig weiter gefasst ist als 86400. Oder wo ist hier mein Denkfehler?


5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Überlauffehler bei Multiplikation
20.12.2023 15:50:28
woaschdsubb
Nachtrag:

Private Sub test()
Dim i As Double
i = 24 * 60
i = i * 60
End Sub

funktioniert. Ich bin ratlos.
AW: VBA: Überlauffehler bei Multiplikation
20.12.2023 16:27:59
Der Steuerfuzzi
Wie schon gesagt, VBA rechnet erst intern die Berechnung aus und übergibt das der Variablen. Nachdem die Berechnung mit lauter Integer-Werten stattfindet ist das "Zwischenergebnis" ebenfalls ein Integer, der erst bei der Übergabe als Double umgewandelt wird. Da die Berechnung für einen Integer-Wert zu hoch ist kommt der Überlauf.

Bei der Berechnung mit den Zwischenschritten berechnest Du erst einen Integer-konformen Wert. Der an eine Double-Variable übergeben wird. Bei der zweiten Berechnung ist bereits eine Double-Variable/ein Double-Wert in der Berechnung vorhanden und damit findet bereits die Berechnung eines Double-Wertes statt.
Anzeige
AW: VBA: Überlauffehler bei Multiplikation
20.12.2023 15:54:47
Der Steuerfuzzi
Hallo,

das liegt mE daran, dass VBA die einzelnen Werte als Integer berechnet und da ist bei 32.767 Schluss. Ist einer der Berechnungsbestandteile ein Double müsste es funktionieren. Also entweder eine Variable, die als Double deklariert ist oder, wenn es sich um Fixwerte handelt als Double markiert ist. Das z.B. sollte dann funktionieren:
Private Sub test()

Dim i As Double
i = 24# * 60 * 60 '86400
End Sub


Gruß
Michael
AW: VBA: Überlauffehler bei Multiplikation
20.12.2023 16:32:30
woaschdsubb
Danke Michael,

das funktioniert.
Ich dachte VBA deklariert die Zwischenergebnisse einer Rechnung wie den Zielwert. Aber anscheinend wird bei Konstanten der kleinstmögliche Variablentyp gewählt.

Das mit dem # kannte ich noch nicht.
Danke auch dafür
Anzeige
AW: VBA: Überlauffehler bei Multiplikation
20.12.2023 16:41:08
Der Steuerfuzzi
Du kannst auch 24.0 eingeben, dann macht der Editor automatisch 24# und damit einen Double daraus.

Es gibt folgende Kurzvarianten:
% = Integer
& = Long
@ = Currency
! = Single
# = Double

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige