Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA - Left gibt wissenschaftliche Zahl zurück

Forumthread: VBA - Left gibt wissenschaftliche Zahl zurück

VBA - Left gibt wissenschaftliche Zahl zurück
20.10.2004 15:26:06
KleinKatha
Hallo zusammen,
ich habe ein Problem bei der Auflösung einer langen Zahl (5700000000000000) mit der Funktion Left im VBA-Code.
Ohne VBA:
In Zelle A1 steht die Zahl, in Zelle A2 steht die Formel =Links(A1;2) Ergebnis: 57
Mit VBA:
In Zelle A1 steht die Zahl, im Code steht pruefziffer=left(cells(1,1),2) Ergebnis: 5, (Das kommt daher, dass die wissenschaftliche Schreibweise 5,7E+15 wäre)
Wie kann ich unterdrücken, dass VBA meine Zahl in der wissenschaftlichen Schreibweise ausgibt?
Danke schonmal,
Katharina
Anzeige
AW: VBA - Left gibt wissenschaftliche Zahl zurück
René
sag dem makro wie die zahl dargestellt werden soll
Selection.NumberFormat = "0"
AW: VBA - Left gibt wissenschaftliche Zahl zurück
JJ
hallo
versuchs mal so (hat bei mir geklappt):
Dim pruefZifferDouble As Double
pruefZifferDouble = Sheets(1).Cells(1, 1).Value / 10
Debug.Print Left(pruefZifferDouble, 2)
du musst die zahl zuerst "kleiner machen". Ab einem bestimmten Wert werden die Zahlen offenbar wissenschaftlich dargestellt. Bei grösseren Zahlen musst du evtl. durch 100, 1000 oder mehr teilen.
gruss
JJ
Anzeige
AW: VBA - Left gibt wissenschaftliche Zahl zurück
KleinKatha
Hi,
erst mal vielen Dank für die Antworten.
Numberformat="0" und autofit habe ich schon im Einsatz. Die Darstellung im Excel ist auch schon richtig.
Ich kann die Zahl leider nicht als double deklarieren, da es sich nur um einen Pseudoeintrag handelt, der in bestimmten Fällen auch Buchstaben enthalten kann.
Katharina
Anzeige
AW: VBA - Left gibt wissenschaftliche Zahl zurück
René
Du möchtest also, dass VBA deine zahl kürzt?
AW: VBA - Left gibt wissenschaftliche Zahl zurück
KleinKatha
Nein, ich möchte nicht kürzen.
5700000000000000 müsste ich theoretisch als Text formatieren, doch dann kommt sofort die wissenschaftliche Schreibweise und das möchte ich nicht. Deshalb hatte ich gehofft, dass wenn ich es als Zahl formatiere und 5700000000000000 angezeigt wird, auch 5700000000000000 mit der Funktion Left ausgelesen wird.
Es wird aber leider 5,7E+15 ausgelesen.
Gruß,
Katharina
Anzeige
AW: VBA - Left gibt wissenschaftliche Zahl zurück
René
Hast Du mal versucht die Breite der Zelle per VBA auf eine Länge festzulegen,
die auf jeden fall länger ist als die Zahl.
Also wenn ich es bei mir ausprobiere (Zahl mit Null Kommastellen formatieren und Zellenbreite) dann gehts bei mir
AW: VBA - Left gibt wissenschaftliche Zahl zurück
KleinKatha
Hi,
hab es sogar mit Autofit programmiert. Funktioniert leider trotzdem nicht.
Trotzdem danke für die vielen Tips.
Gruß,
Katharina
Anzeige
AW: VBA - Left gibt wissenschaftliche Zahl zurück
20.10.2004 17:16:42
René
schick mir doch mal so eine datei,
vielleicht entdecke ich was
Gruß
René
;
Anzeige

Infobox / Tutorial

VBA: Left gibt wissenschaftliche Zahl zurück – Lösungen und Tipps


Schritt-für-Schritt-Anleitung

  1. Zelle formatieren: Stelle sicher, dass die Zelle, in der die Zahl steht, auf "Zahl" oder "Text" formatiert ist. Um dies zu tun:

    • Klicke mit der rechten Maustaste auf die Zelle.
    • Wähle "Zellen formatieren".
    • Wähle "Zahl" oder "Text" aus dem Menü.
  2. VBA-Code anpassen: Verwende den folgenden Code, um die Zahl korrekt auszulesen:

    Dim pruefziffer As String
    pruefziffer = CStr(Sheets(1).Cells(1, 1).Value)
    Debug.Print Left(pruefziffer, 2)

    Dieser Code konvertiert die Zahl in einen String, bevor die Left-Funktion angewendet wird.

  3. Zellenbreite anpassen: Um sicherzustellen, dass die Zahl nicht in der wissenschaftlichen Schreibweise dargestellt wird, kannst du die Zellenbreite anpassen:

    Sheets(1).Columns("A").ColumnWidth = 20

Häufige Fehler und Lösungen

  • Fehler: Die Zahl wird weiterhin in wissenschaftlicher Schreibweise angezeigt.

    • Lösung: Stelle sicher, dass die Zelle als "Zahl" formatiert ist und die Zellenbreite ausreichend ist, um die gesamte Zahl anzuzeigen.
  • Fehler: Der Code gibt nicht das erwartete Ergebnis zurück.

    • Lösung: Verwende CStr zur Umwandlung der Zahl in einen String, bevor du die Left-Funktion anwendest.

Alternative Methoden

  1. Verwendung von Text: Du kannst die Zahl als Text formatieren, um die wissenschaftliche Schreibweise zu vermeiden:

    Dim pruefziffer As String
    pruefziffer = Sheets(1).Cells(1, 1).Text
    Debug.Print Left(pruefziffer, 2)
  2. Teilen der Zahl: Wenn die Zahl zu groß ist, kannst du sie in kleinere Teile umwandeln:

    Dim pruefZifferDouble As Double
    pruefZifferDouble = Sheets(1).Cells(1, 1).Value / 1000000000000
    Debug.Print Left(pruefZifferDouble, 2)

Praktische Beispiele

  • Beispiel 1: Wenn in Zelle A1 die Zahl 5700000000000000 steht, kannst du die ersten zwei Ziffern so auslesen:

    Dim pruefziffer As String
    pruefziffer = CStr(Sheets(1).Cells(1, 1).Value)
    MsgBox Left(pruefziffer, 2) ' Gibt "57" aus
  • Beispiel 2: Um sicherzustellen, dass die Zahl nicht in wissenschaftlicher Notation erscheint, setze die Zellenbreite manuell:

    Sheets(1).Columns("A").ColumnWidth = 25

Tipps für Profis

  • Wissenschaftliche Notation abschalten: Um die wissenschaftliche Notation in Excel zu vermeiden, solltest du die Zellen als "Text" formatieren, bevor du die Zahlen eingibst.

  • Verwendung von NumberFormat: Du kannst das Format direkt im VBA-Code anpassen:

    Sheets(1).Cells(1, 1).NumberFormat = "0" ' Setzt das Format auf Ganzzahl

FAQ: Häufige Fragen

1. Wie kann ich die wissenschaftliche Schreibweise in Excel vermeiden? Um die wissenschaftliche Schreibweise in Excel abzuschalten, formatiere die Zelle als "Text" oder stelle sicher, dass die Zelle eine ausreichende Breite hat.

2. Warum gibt die Left-Funktion eine andere Zahl zurück? Wenn du eine große Zahl in Excel eingibst, wird sie möglicherweise als wissenschaftliche Zahl interpretiert. Verwende CStr, um die Zahl in einen String umzuwandeln, bevor du Left anwendest.

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