Discussion:
Exponentialschreibweise unterdrücken
(zu alt für eine Antwort)
Andreas Sperling
2010-03-23 16:03:07 UTC
Permalink
Hallo zusammen,
ich habe folgendes Problem:
Ich erhalte eine Exceldatei die in einer Spalte ein Zahlencode enthält:
In der Bearbeitungsleiste sehe ich 80200000000000000 im Feld selber wird die
Exponentialweise dargestellt 8,02E+16

Auf dieses Feld greife ich nun mit VB zu!
Im VB wird mir auch die Exponentialweise dargestellt, dies möchte ich aber
verhindern. Weil es sich eigentlich nicht um eine Zahl handelt sondern eine
Matrix ist.
Ich möchte auch nicht vorher die Zeilenformatierung ändern sondern wenn
nötig nur im Quellcode.
Kann mir jamand sagen wie ich das hinkriege?

Ich greife nicht mit VBA darauf zu sondern mit VB.

wenn ich versuche die den Inhalt des Feldes in ein String zu wandeln
funktioniert das auch nicht.
CStr(.application.activesheet.cells(z,s))
dann ist das Ergebnis trotzdem 8,02E+16

Vielen Dank im Voraus
Andreas
Claus Busch
2010-03-23 16:28:59 UTC
Permalink
Hallo Andreas,
Post by Andreas Sperling
wenn ich versuche die den Inhalt des Feldes in ein String zu wandeln
funktioniert das auch nicht.
CStr(.application.activesheet.cells(z,s))
dann ist das Ergebnis trotzdem 8,02E+16
dann probiers mal so:
Cells(z, s).NumberFormat = "0"


Mit freundlichen Grüssen
Claus Busch
--
Win XP Prof SP2 / Vista Ultimate
Office 2003 SP2 / 2007 Ultimate
Bernd P
2010-03-23 16:40:36 UTC
Permalink
Hallo Andreas,

Format(x,"##########################0.0#####################")

Viele Gruesse,
Bernd
Peter Schleif
2010-03-23 17:10:02 UTC
Permalink
Post by Andreas Sperling
80200000000000000
8,02E+16
Deine Zahl ist 17-stellig. Excel hat aber nur eine Genauigkeit von 15
Stellen und liefert darum auch nur 15 signifikante Stellen an sien
Umgebung. Der Rest wird mit Nullen aufgefüllt. Das ist die ge'fakte Zahl
die Du in der Bearbeitungszeile siehst.

12345678901234567 wird zu
12345678901234500

In VB kannst Du die Zahl zwar wieder in einen String umwandeln (ohne das
Format der Zelle zu ändern), trotzdem wird das Ergebnis nur für die
ersten 15 Zeichen zuverlässig sein.

Peter
Wolfgang Habernoll
2010-03-24 15:45:52 UTC
Permalink
Hallo Andreas
Post by Andreas Sperling
Hallo zusammen,
In der Bearbeitungsleiste sehe ich 80200000000000000 im Feld selber wird die
Exponentialweise dargestellt 8,02E+16
Auf dieses Feld greife ich nun mit VB zu!
Im VB wird mir auch die Exponentialweise dargestellt, dies möchte ich aber
verhindern. Weil es sich eigentlich nicht um eine Zahl handelt sondern eine
Matrix ist.
Ich möchte auch nicht vorher die Zeilenformatierung ändern sondern wenn
nötig nur im Quellcode.
Kann mir jamand sagen wie ich das hinkriege?
Ich greife nicht mit VBA darauf zu sondern mit VB.
wenn ich versuche die den Inhalt des Feldes in ein String zu wandeln
funktioniert das auch nicht.
CStr(.application.activesheet.cells(z,s))
dann ist das Ergebnis trotzdem 8,02E+16
Vielen Dank im Voraus
Andreas
versuche es doch mit CDec. Es gehen dir aber in der Zelle, wie Peter
schon geschrieben hat, die Stellen über 15 verloren obwohl man mit CDec
bis 29 Stelle rechnen könnte.


Dim vX As Variant
vX = CDec(.application.activesheet.cells(z,s))
--
mfG
Wolfgang Habernoll
Peter Schleif
2010-03-24 15:55:15 UTC
Permalink
[...] Weil es sich eigentlich nicht um eine Zahl handelt sondern eine
Matrix ist.
Wenn Du sowieso nicht damit rechnen musst, wäre es wohl am besten, die
Zahl schon mit Apostroph (also als Text) einzugeben:

'80200000000000000

Peter
Andreas Sperling
2010-03-25 14:56:42 UTC
Permalink
Vielen Dank für die vielen Informationen.
es sieht aber so aus, als wenn ich das Problem ab der 15ten Stelle nicht im
Griff bekomme.
Deshalb habe ich mich dazu entschieden im Ursprung der Datei eine
alternative zu finden und auch das Glück hatte das Feld als Text auszugeben.

Vielen Dank
Andreas
Post by Andreas Sperling
Hallo zusammen,
In der Bearbeitungsleiste sehe ich 80200000000000000 im Feld selber wird
die Exponentialweise dargestellt 8,02E+16
Auf dieses Feld greife ich nun mit VB zu!
Im VB wird mir auch die Exponentialweise dargestellt, dies möchte ich aber
verhindern. Weil es sich eigentlich nicht um eine Zahl handelt sondern
eine Matrix ist.
Ich möchte auch nicht vorher die Zeilenformatierung ändern sondern wenn
nötig nur im Quellcode.
Kann mir jamand sagen wie ich das hinkriege?
Ich greife nicht mit VBA darauf zu sondern mit VB.
wenn ich versuche die den Inhalt des Feldes in ein String zu wandeln
funktioniert das auch nicht.
CStr(.application.activesheet.cells(z,s))
dann ist das Ergebnis trotzdem 8,02E+16
Vielen Dank im Voraus
Andreas
Loading...