Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
640to644
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
640to644
640to644
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Ü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

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.


@ 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!"
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
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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige