Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1584to1588
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

Überlauf

Überlauf
12.10.2017 17:55:55
Martin
Hallo Community
zuerst eine Frage zu meinem letzten Beitrag vom 30.09./01.10. betreffend "VBA: Array-Übergabeparameter": Wie kann ich noch darauf antworten? Ich sehe den Beitrag nur noch unter "Deine Beiträge", kann aber dort kein Fenster öffnen, um eine Antwort einzugeben.
Nun folgendes: Die unten stehende Zeile löst den Fehler "Überlauf" aus, je nach Grösse der Werte "a" bis "f" (diese können zwischen 1 und ca. 40 sein). Offenbar spielt es keine Rolle, als was "Zahl" deklariert ist (Variant, Long, ULong, Dezimal, ...), weil der Fehler bereits vor der Zuweisung erfolgt.
Ich benötige die Zahl, um sie in einer Progressbar dem Max-Wert zuzuweisen. Natürlich kann ich sie dann x-Mal durch z. B. 1'000 teilen, bis sie als Max-Wert akzeptiert wird (Int32), aber zuerst muss ich sie mit untenstehender Formel berechnen.
dim Zahl as Variant
Zahl = a * b * c * d * e
Wie muss ich vorgehen?
Besten Dank
Martin

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Überlauf
12.10.2017 18:03:40
Hajo_Zi
Hallo Martin,
Beiträge sind nur 6 Tage im Forum.
Man Könnte vermuten die Zahl ist über den Bereich von Excel.
nur wenige schauen auf Deinen Rechner und sehen die Datei.
Ich möchte gerne den Fehler im Original sehen.
Ich baue keine Datei nach. Die Zeit hat schon jemand investiert.
Ein Nachbau sieht meist anders aus als das Original. Darum sollte das Original verlinkt werden.
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten anonymisieren bzw. pseudonymisieren.

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Also ich schreibe keine Beiträge mit dem Betreff "Gerne u. Danke für die Rückmeldung. o.w.T."
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben, mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
Anzeige
AW: Überlauf
12.10.2017 18:05:14
Nepumuk
Hallo Martin,
1. Fragen die im Archiv gelandet sind können nicht mehr beantwortet werden. Mach das Thema neu auf.
2. Teste mal:
Public Sub Test()
    Dim Zahl As Double
    Dim a As Long, b As Long, c As Long, d As Long, e As Long
    a = 40
    b = 40
    c = 40
    d = 40
    e = 40
    Zahl = a * b * c * d * e
End Sub

Gruß
Nepumuk
Anzeige
AW: Überlauf
12.10.2017 18:13:50
Daniel
hi
das Problem dürfte auftreten, wenn deine Zahlen oder Variablen a-f als Integer deklariert sind und das Ergebnis größer ist als der Grenzwert für integer (32768)
bei Multiplikation und Addition geht VBA davon aus, dass das Ergebnis den selben Datentyp haben wird wie die einzelnen Faktoren bzw Summanden, und das ist nicht der fall, wenn das Ergebnis zu groß wird.
Es gibt folgende Lösungsvarianten:
a) wenn a-f Variablen sind: diese als LONG deklarieren, dann ist der Zahlenraum in der Regel groß genug
b) wandle die erste Zahl in eine Zahl vom Typ LONG um, das wird dann für die Berechnung übernommen
bei Variablen:
zahl = CLng(a) * b * c * d * e
bei fixen Zahlen:
Zahl = 11# * 12 * 13 * 14 * 15
c) führe als erste Rechenoperation eine Division durch 1 aus. Bei einer Division muss VBA davon ausgehen, dass das Ergebnis eine Zahl vom Typ Double sein wird (Dezimalzahl) und damit hast du wieder einen Zahlenraum zur Verfügung der groß genug sein sollte:
Zahl = a / 1 * b * c * d * e
gruß Daniel
PS: man sollte seine Ganzzahlvariablen immer als LONG deklarieren und nicht als Integer.
bei Integer ist der Zahlenraum dann oft zu klein, außerdem wird auf den aktuellen Rechnern (32-Bit) der Datentyp Long genauso schnell verarbeitet wie der Typ Integer, dh es gibt keinen Grund, Integer zu verwenden.
Anzeige
AW: Überlauf
13.10.2017 22:05:29
Martin
Alles klar, funktioniert mit dem Tipp von Daniel. Vielen Dank allen, die mitgeholfen haben! Und wenn auch ihr mir bei meiner letzten Anfrage "VBA: Array-Übergabeparameter" geholfen habt, dann nochmals allen vielen Dank! Auch dort klappt nun alles nach meinen Wünschen.
Das mit dem "Überlauf" brauche ich für eine Progressbar. Dabei ist mir aufgefallen, dass wenn die Progressbar in einer Userform von Anfang an angezeigt wird, sie auch in 3D dargestellt wird (auch bei wiederholtem Klicken auf die Schaltfläche "Start"; siehe Anhang). Wenn ich aber bei der Progressbar in deren Eigenschaftenfenster Visible auf False umstelle (so dass sie beim Laden der Userform zuerst noch nicht erscheint), und z. B. im Sub cmdStart_Click die auskommentierte Zeile "ProgBar1.Visible = True" aktiviere, dann erschient die Progressbar zwar, aber nicht mehr im 3D-Look (auch bei wiederholtem Klicken auf die Schaltfläche "Start").
Wie kann realisiert werden, dass auch bei späterem Anzeigen der Progressbar diese in 3D erscheint?
Martin
https://www.herber.de/bbs/user/116955.xlsm
Anzeige
AW: Me.Repaint
13.10.2017 22:43:26
Daniel
Hi
wenn VBA-Markros laufen, dann hat der VBA-Code prio und der Rest wird, wenn überhaupt, nachlässig behandelt.
So auch die grafische Aktualisierung, hier wird im Prinzip nur der Balken sofort aktualisiert, der Rest wartet, bis das makro durch ist.
Wenn die Grafischen Änderungen sofort übernommen werden sollen, musst du den Befehl Me.Repaint ausführen, dann wird die Userform neu und vollständig gezeichnet.
Gruß Daniel
Die letzte AW im alten Thread war vom 1.10., ...
12.10.2017 19:06:59
Luc:-?
…Martin,
das ist definitiv zulange her. Wäre sie vom 7.10., könntest du dort noch darauf antworten, obwohl der BT nicht mehr im Forum ange­zeigt wird. Da du damals dort nicht mehr geantwortet und folglich vorsorglich auch nicht verlängert hast (durch nachfolgende BTe), hast du das letztlich selbst „verschuldet“. ;-]
Aber evtl helfen dir ja die bereits gegebenen AWen, obwohl ich nicht glaube, dass es sich per sé um einen DeklarationsFehler (von Zahl) handelt (da wurde dein Text wohl nicht aufmerksam genug gelesen, denn Zahl ist ja deklariert, weshalb VBA nicht von den Typen der Faktoren ausgehen muss; allerdings wäre das dann doch schon bei a…e möglich, worauf Überlauf hindeuten könnte)…
Anderenfalls bliebe nur noch das Produkt selbst, das den zulässigen Wertebereich überschreitet, aus welchen Gründen auch immer…
Gruß, Luc :-?
Besser informiert mit …
Anzeige
AW: Die letzte AW im alten Thread war vom 1.10., ...
17.10.2017 10:20:43
Martin
Alles klar, dank euren antworten funktioniert alles einwandfrei.
Euch fleissigen Helfern alles Gute
Martin
Na, denn iss ja jut... ;-) owT
17.10.2017 13:18:14
Luc:-?
:-?

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige