Excel VBA - Numberformat funktioniert nicht

MickH74

Lieutenant
Registriert
Apr. 2009
Beiträge
589
Hallo Forum,

ich verwende folgenden Code:

Code:
If Sheets("Newcomer").Cells(Aktuelle_Zeile, 6).Value < 1 Then
            Sheets("Newcomer").Cells(Aktuelle_Zeile, 6).NumberFormat = "#,##0;[Red]-#,##0"
   Else
            Sheets("Newcomer").Cells(Aktuelle_Zeile, 6).NumberFormat = "#,##0.000;[Red]-#,##0.000"
End If

Das ganze eingepackt in eine Schleife, welche die Variable "Aktuelle_Zeile" hochzählt.

Vorher sieht die Spalte so aus:

numberformat_vorher.GIF

Nach dem Makro dann so:

numberformat.GIF

Wie man sieht, ist das Ergebnis seltsam. Zunächst wird ständig falsch formatiert, denn nur bei einem Zellwert von kleiner 1 soll mit 3 Nachkommastellen formatiert werden. Am unteren Ende wechselt dann die Formatierung ohne ersichtlichen Grund zu einer ohne Nachkommastellen und das unabhängig davon, ob der Zellwert nun größer oder kleiner als 1 ist.

Hat jemand eine Idee, warum?

Danke und Gruß,
Mick
 
Sieht gar nicht so falsch aus, was das Programm macht.

1. Hast du zwar im Programmcode die amerikanische Zahlenformatierung eingehalten (Tausdender-Komma, Dezimalpunkt), aber bei der Darstellung am Bildschirm zählt nur, wie die Formatierung in den Ländereinstellungen des Windows ist.

2. Stimmt die Bedingung im Programm nicht. Alle Zahlen kleiner 1 werden gerundet ohne Nachkomma dargestellt, der Rest mit 3 Nachkommastellen.
 
Hallo Mick,

der Vergleichsoperator oben ist verkehrt herum. Du prüfst auf < 1 und wählst im Then Zweig die Formatierung ohne Nachkommastellen und im Else Zweit dann die mit Nachkommastellen.

Die 1 en unten sind im Original wohl Zahlen unter 1 wie 0,9 usw. Daher mal so, mal anders.

Ersetze den Vergleich nach .Value < 1 durch .Value >= 1, dann sollte die Formatierung passen.

Gruß
JWurmi
 
Hab den Fehler gefunden. Es lag daran, dass ich die Tabelle erst formatieren lasse und anschließend nach den Werten absteigend sortiere. Bei der Sortierung wird aber wohl das Zellformat nicht mitsortiert, sondern bleibt fest stehen.

P.S.: Und der Fehler mit dem Vergleichsoperator ist auch korrigiert. Danke für den Hinweis :-)

Gruß,
Mick
 
Zurück
Oben