Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Überlauffehler bei CInt bei nur 7 Zeichen?

Forumthread: Überlauffehler bei CInt bei nur 7 Zeichen?

Überlauffehler bei CInt bei nur 7 Zeichen?
25.07.2005 16:28:52
Reinhard
Hallo Wissende,
ich habe jetzt noch nicht in die Hilfe geschaut und glaube auch nicht wirklich dass da was steht zum Problem.

option explicit '*lächel zu K...*
Sub ueberlauf()
On Error Resume Next
GradNochSo = "1.1234"
Zuviel = "1.12345"
MsgBox CInt(Zuviel)
MsgBox CInt(GradNochSo)
End Sub

ergibt die Anzeige: 11234 was mich sehr überrascht, da ich 1,1234 erwartet habe.
Weiterhin dachte ich Excel rechnet 15stellig, warum also der vorzeigte Überlauf?
Gruß
Reinhard
Anzeige

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Überlauffehler bei CInt bei nur 7 Zeichen?
25.07.2005 16:31:52
Unbekannter
der zu frühe überlauf liegt da ran das du die variablen nicht declariert hast (z.b. integer,double) und da da ein punkt steht wird es als tausender trennzeichen betrachtet und daher kommt 11234 raus setze ein komma dann sollte es gehen
AW: Überlauffehler bei CInt bei nur 7 Zeichen?
25.07.2005 16:34:47
MichaV
Hi,
das ist VB, kein Excel.
CInt wandelt in Integer um. Aus der OH: "vom Datentyp Integer werden als 16-Bit-Zahlen (2 Bytes) in einem Bereich von -32.768 bis 32.767 gespeichert"
Das sind ganze Zahlen, also immer ohne Komma. Darum brauchst Du kein Komma zu erwarten. Und die Zahlen gehen nur bis 32.767, darüber gibts einen Überlauf.
Gruss- Micha
Anzeige
AW: Überlauffehler bei CInt bei nur 7 Zeichen?
25.07.2005 16:34:48
Hajo_Zi
Hallo Reinhard,
wie hast Du das hinbekommen das der Code Läuft trotzt Option Explicit.
Oder hast Du wichtige Sachen nicht gepostet?
Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP1.


Anzeige
@ Hajo
25.07.2005 16:36:58
MichaV
Hi Hajo,
hab ich mir auch gedacht.
Aber wer weiß, welche Bedeutung das '*lächel zu K...* hat....
Gruss- Micha
Danke für die Antworten aber :-(
25.07.2005 16:42:53
Reinhard
Hallo,
die Antworten bringen mich leider nicht weiter. (Das option explicit war an sich nur ein spezialjoke für jmd. hier, sicher nicht verständlich für alle anderen)
Nachstehend der geänderte Code.
Auch die Variablendeklarationg brachte nichts.
un für mich ist 1.12345 deutlich im Wertebereich von Integer.
Und Komma anstatt Punkt verwirrt mich nur mehr, weil dann 2mal eine 1 angezeigt wird.
Gruß
Reinhard>pre>
Option Explicit

Sub ueberlauf()
Dim GradNochSo As String, Zuviel As String
On Error Resume Next
GradNochSo = "1.1234"
Zuviel = "1.12345"
MsgBox CInt(Zuviel)
MsgBox CInt(GradNochSo)
End Sub


Anzeige
noch offen o.w.t.
25.07.2005 16:43:50
Reinhard
Gruß
Reinhard
AW: noch offen o.w.t.
25.07.2005 16:47:18
Hajo_Zi
Hallo Reinhard,
es Stand schon in einen Beitrag das der Punkt als tausendertrennzeichen erkannt wird und dmi keine Bewandnis hat und 112345 ist für mich schon nicht mehr de Bereich von Integer.
Gruß Hajo

"Wer Rechtschreibfehler findet, darf sie behalten!"
Anzeige
Thx, manchmes muss ich 2mal erklärt kriegen :-)owt
25.07.2005 16:53:39
Reinhard
Gruß
Reinhard
Tausender-Trennzeichen und Komma
25.07.2005 18:49:38
Boris
Hi Reinhard,
damit du das nicht falsch verstehst:
In VBA ist das , (Komma) sehr wohl der . (Punkt) - und vice versa.
Da du aber deine "Zahl" als String deklariert hast, wird der Punkt mittels der Umwandlungsfunktion CInt einfach "wegradiert". Schau dazu auch mal in die VBA-Hilfe - Stichwort: Umwandlungsfunktionen
Hättest du deine Variablen ordnungsgemäß als Single oder Double deklariert, hättest du dir zum Einen die Umwandlungsfunktion ersparen können und zum anderen auch keinen Überlauf produziert.
Grüße Boris
http://www.excelformeln.de
Anzeige
AW: Tausender-Trennzeichen und Komma
25.07.2005 19:06:34
Reinhard
Hallo Boris,
ich schaue da mal nach. Und wenn ich eine CInt2-Funktion bastle wird der Punkt ausgewertet und nicht wegradiert ds kleine uunschuldige Pünktchen*g
Meine 2 Variablen sind Texte, wie sollte ich denn in Single oder Double umwandeln?
Gruß
Reinhard
Zahlen sind eben Zahlen und kein Text...
25.07.2005 19:14:38
Boris
Hi Reinhard,
...und wenn deine "Zahlen" aus irgendwelchen Gründen bei dir als Text vorliegen, dann würde ich den Hebel dort ansetzen, wo sie möglicherweise unnötiger Weise zu Texten werden, um sie direkt als Zahl zu belassen. Alles andere ist Murks.
Grüße Boris
Anzeige
Ach so: Option Explicit
25.07.2005 19:20:52
Boris
Hi Reinhard,
...auch wenn´s von Dir hier nur als Joke gedacht war, kann ich nur wärmstens und dringlichst empfehlen, das als Grundeinstellung zu übernehmen.
Am Anfang mag das etwas mühsamer sein - später wirst du nicht mehr drauf verzichten wollen (z.B. die Intellysense ;-) - aber natürlich hauptsächlich zwecks Fehlervermeidung).
Selbst ich mit meinen bescheidenen VBA-Kenntnissen lese mir heute keinen Code mehr durch, der erkennbar ohne Option Explicit gefertigt wurde. Die mögliche Fehlerursache potenziert sich dadurch einfach ungemein.
Grüße Boris
Anzeige
AW: Ach so: Option Explicit
25.07.2005 19:37:41
Reinhard
Hallo Boris,
dein vorletzter Satz, hmmh, wenn das andere genauso sehen, lesen ja einige der Guten gar nicht meinen Code *grübel* & *nachdenk*
Ansonsten ich schreibe Code zu 99% um Anfragen hier oder woanders zu beantworten. Da benutze ich kurze Variablennamen z,s,zei,spa usw. da gibts keine Schreibfehler wie bei meinem geliebten lolezte was mir bei größerem Code früher schon viel Zeiverlust enbrachte.
Bei längerem Code und/oder bei vielen Prozeduren benutze ich Option Explicit schon
Aber ich bin kein Sturkopf , ich habs jetzt eingeschaltet unter Optionen:-)))
Gruß
Reinhard
Anzeige
Lange Variablennamen
25.07.2005 20:50:46
Boris
Hi Reinhard,
zum Thema Zeitverlust:
Option Explicit

Sub langer_variablenname()
Dim DasIstEinSehrLangerNameFuerEineVariable As String
DasIstEinSehrLangerNameFuerEineVariable = "Ist doch kein Problem"
MsgBox "Oder siehst du das anders?", vbQuestion, _
DasIstEinSehrLangerNameFuerEineVariable & ";-)))))"
End Sub

Ein mal deklariert, ist die Verwendung im Code völlig unproblematisch:
Schreibe dann ein d (oder auch die ersten 2 oder 3 Buchstaben der Variablen) und drücke dann Strg+Leertaste. Einfacher geht´s nimmer.
Grüße Boris
Anzeige
wow, superklasse
25.07.2005 21:05:14
Reinhard
Danke Boris ,
kannte ichc nicht, erspart mir jetzt viele Strg-C und Strg-V
*lach* in meiner Gier habe ich beim Lesen das "+Leerzeichen" überlesen und ohne tat sich nicht viel, eher gar nix*g
Gruß
Reinhard
AW: Danke für die Antworten aber :-(
25.07.2005 16:52:26
Reinhard
Hallo,
ich weiss grad nmicht were es schrieb aber er hatte Recht.
1.12345 wird als 112345 interpretiert und löst den Überlauf aus. Okay.
Aber ich verstehe nicht warum der Punkt ignoriert wird. Die 1 bei CInt(1,1234 vertehe ich ja noch.
Gruß
Reinhard
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Überlauffehler bei CInt in Excel VBA beheben


Schritt-für-Schritt-Anleitung

Um den Überlauffehler bei der Verwendung von CInt in VBA zu beheben, folge diesen Schritten:

  1. Variablen deklarieren: Stelle sicher, dass deine Variablen korrekt deklariert sind. Verwende Single oder Double für numerische Werte, um Überlaufprobleme zu vermeiden.

    Dim GradNochSo As Single, Zuviel As Single
  2. Zahlen korrekt formatieren: Achte darauf, dass du den Punkt (.) oder das Komma (,) entsprechend deiner Locale-Einstellungen verwendest. In vielen Fällen kann ein Punkt als Tausendertrennzeichen interpretiert werden.

  3. Verwende die richtige Umwandlungsfunktion: Anstatt CInt, das nur ganze Zahlen akzeptiert, könntest du CDbl verwenden, um auch Dezimalzahlen zu verarbeiten.

    MsgBox CDbl(Zuviel)

Häufige Fehler und Lösungen

  • Überlauf bei CInt: Wenn du CInt verwendest und eine Zahl über 32.767 eingibst, tritt ein Überlauf auf. Verwende stattdessen CLng, um größere Werte zu verarbeiten.

  • Falsche Trennzeichen: Wenn du 1.12345 eingibst, wird dies möglicherweise als 112345 interpretiert. Ändere das Format auf 1,12345 (oder passe deine Regionseinstellungen an).


Alternative Methoden

Falls du weiterhin Probleme mit CInt hast, könntest du die folgenden Alternativen verwenden:

  • CDbl oder CCur: Diese Funktionen konvertieren Werte in Double oder Currency, was dir mehr Flexibilität bei der Verarbeitung von Dezimalzahlen gibt.

  • Formatierung vor der Umwandlung: Verwende Format oder Replace, um sicherzustellen, dass die Werte im richtigen Format vorliegen, bevor du sie umwandelst.

    Zuviel = Replace(Zuviel, ".", ",")
    MsgBox CInt(Zuviel)

Praktische Beispiele

Hier sind einige Beispiele, die dir helfen, die Konzepte zu verstehen:

  1. Ein einfaches Beispiel mit CInt:

    Sub BeispielCInt()
       Dim Zahl As Single
       Zahl = 1.1234
       MsgBox CInt(Zahl) ' Dies führt zu einem Überlauf
    End Sub
  2. Verwendung von CDbl:

    Sub BeispielCDbl()
       Dim Zahl As Double
       Zahl = 1.1234
       MsgBox CDbl(Zahl) ' Gibt 1.1234 zurück
    End Sub

Tipps für Profis

  • Nutze immer Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind. Dies reduziert Fehler und macht deinen Code leichter verständlich.

  • Überprüfe deine Regionseinstellungen in Windows, da diese die Interpretation von Zahlen in Excel VBA beeinflussen können.

  • Verwende die integrierte VBA-Hilfe, um mehr über Umwandlungsfunktionen und deren Anwendung zu lernen.


FAQ: Häufige Fragen

1. Warum erhalte ich einen Überlauffehler bei CInt?
Der Überlauffehler tritt auf, wenn der Wert, den du in CInt eingibst, außerhalb des gültigen Bereichs für Integer-Zahlen liegt (-32.768 bis 32.767).

2. Wie kann ich sicherstellen, dass meine Variablen korrekt deklariert sind?
Verwende Option Explicit am Anfang deines Codes. Dies zwingt dich dazu, jede Variable zu deklarieren, was die Wahrscheinlichkeit von Fehlern verringert.

3. Was ist der Unterschied zwischen CInt und CDbl?
CInt wandelt in Integer um, während CDbl Werte in den Double-Datentyp umwandelt, der Dezimalzahlen speichern kann. Verwende CDbl für Werte mit Dezimalstellen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige