Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1100to1104
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
Inhaltsverzeichnis

TickLabels.NumberFormat

TickLabels.NumberFormat
Klaus
Hallo,
ich sollte bei einem Chart die Ordinatenachse in der Formatierung umschalten (normal bzw. wissenschaftlich). Ich verwende
ChartObjects("Chart 1").Chart.Axes(xlValue).TickLabels.NumberFormat = "###0" & Application.DecimalSeparator & "00"
bzw.
ChartObjects("Chart 1").Chart.Axes(xlValue).TickLabels.NumberFormat = "###" & Application.DecimalSeparator & "00" & "E+00"
Das funktioniert soweit auf einem englischen System. Bei einem deutschen System wird der Dezimalseparator (,) eingesetzt, in der Formatierung der Achse steht dann aber der Punkt (.). Dies entspricht dem Tausenderseparator und die Beschriftungen sind dann ohne Nachkommastellen.
Kann mir jemand weiterhelfen? Muss ich mit NumberFormatLocal arbeiten?
Bitte um eure Hilfe.
Danke,
Klaus

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: TickLabels.NumberFormat
09.09.2009 11:25:18
fcs
Hallo Klaus,
im VBA-Code müssen Zahlenformate/Numberformat in de US/englischen Schreibweise angegeben werden. Die Darstellung ist in der Systemeinstellung bzw. Excel-Einstellung unter Optionen-International.
also
.NumberFormat = "#,##0.00" 'mit Tausenderstellen-Markierung, 2 Nachkommastellen
.NumberFormat = "0.00" 'ohne Tausenderstellen-Markierung, 2 Nachkommastellen Vorkomma-0 bei Zahlen kleiner 1
.NumberFormat = "###.00E+00" '10er-Potenzen in 3er-Schritten, max. 3 Vorkammastellen, 2 Nachkommastellen
.NumberFormat = "0.00E+00" '10er-Potenzen in 1er-Schritten, 1 Vorkommastelle, 2 Nachkommastellen
Mit NumberformatLocal handelt man sich ggf. andere Probleme ein, ist aber ggf. insbesondere bei Währungen relevant, da VBA hier gerne mal nur in US$ arbeitet.
Gruß
Franz
Anzeige
AW: TickLabels.NumberFormat
09.09.2009 11:27:06
JogyB
Hi.
Hast Du einfach mal probiert, auch in der deutschen Version den Punkt zu nehmen?
Gruss, Jogy
AW: TickLabels.NumberFormat
10.09.2009 09:00:21
Klaus
Hallo Franz und Jogy,
vielen Dank für eure Tipps und entschuldigt bitte meine späte Rückmeldung.
Ich habe auch schon probiert, für den Dezimalseparator "." zu verwenden. Das funktioniert i. A. für Zellen schon, aber bei den Ticklabels des Charts wird ein Custom Format angelegt und je nach Lokalisierung (Englisch oder Deutsch) funktioniert die Darstellung dann nicht. Wie würdet ihr ein Format "###.00E+00" beim Ticklabels.NumberFormat setzen, dass es für Deutsch und Englisch funktioniert (Windows und Office englisch bzw. Windows und Office deutsch)?
Danke für eure Hilfe.
Klaus
Anzeige
Lokale Formate, NumberFormat, NumberFormatLocal
10.09.2009 14:06:21
fcs
Hallo Klaus,
man kann die Sprache in den Systemeinstellungen ermitteln und abhängig davon Festlegungen für lokale Formate treffen. Die Werte und Variablennamen für die Sprachen findest du im VBA-Editor-Objektkatalog wenn du nach "msoLanguageID" suchst.
Das Prüfen und ggf. zeitweise Ändern der Einstellung (Option) "Trennzeichen vom Betriebssystem übernehmen" ist dabei unbedingt erforderlich, da sonst Zahlen Kuddel-Muddel entseht.
Gruß
Franz
Beispiel:

'Prozedur in einem allgemeinen Modul der Datei, evtl. mit Workbook_Open starten
Option Explicit
'Variablen für VBA-Projektweite NumberFormatLocal-Formate
Public strLocalFormat_Sci As String, strLocalFormat_Dec1000 As String
Public bolSeparator As Boolean 'Status Trennzeichen vom Betriebssystem übernehmen
Sub subLocalFormat()
'Lokale Zahleformate abhängig von den Systemeinstellungen festlegen
'Status für "Trennzeichen vom Betriebssystem übernehmen" merken
bolSeparator = Application.UseSystemSeparators
With Excel.Application.LanguageSettings
'Lokale Formate gemäß Spracheinstellung festlegen
Select Case .LanguageID(msoLanguageIDInstall)
Case msoLanguageIDEnglishUS
strLocalFormat_Sci = "##0.00E+00": strLocalFormat_Dec1000 = "#,##0.00"
Case msoLanguageIDEnglishUK
strLocalFormat_Sci = "##0.00E+00": strLocalFormat_Dec1000 = "#,##0.00"
Case msoLanguageIDGerman
strLocalFormat_Sci = "##0,00E+00": strLocalFormat_Dec1000 = "#.##0,00"
Case msoLanguageIDSwissGerman
strLocalFormat_Sci = "##0,00E+00": strLocalFormat_Dec1000 = "#'##0.00"
Case Else
strLocalFormat_Sci = "": strLocalFormat_Dec1000 = ""
End Select
End With
End Sub
'Anwendung in beliebigen Prozeduren der Datei
Sub aaTest()
Dim Number As Double
Call subLocalFormat 'Nicht erforderlich, wenn per Workbook_Open gestartet.
'Status für "Trennzeichen vom Betriebssystem übernehmen" prüfen und ggf. _
auf True setzen
If bolSeparator = False Then Application.UseSystemSeparators = True
'Test-Eingaben mit Anzeige der Formate
Range(Cells(1, 1), Cells(1, 2)).NumberFormat = "General"
Range(Cells(1, 1), Cells(1, 2)).ClearContents
Number = 123456.123
With Cells(1, 1)
'Zellformatierungen mit NumberFormatLocal
.Value = Number
.NumberFormatLocal = strLocalFormat_Sci
End With
With Cells(1, 2)
.Value = Number
.NumberFormatLocal = strLocalFormat_Dec1000
End With
'Status für "Trennzeichen vom Betriebssystem übernehmen" ggf. wieder zurücksetzen
If bolSeparator = False Then Application.UseSystemSeparators = False
End Sub

Anzeige
AW: Lokale Formate, NumberFormat, NumberFormatLocal
10.09.2009 20:10:22
Klaus
Hallo Franz,
vielen Dank für deine ausführliche Hilfe. Ich werde es damit versuchen...
Schöne Grüße,
Klaus

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige