Zahlenformat setzen

Antwort erstellen


Um automatische Eingaben zu unterbinden, musst du die nachfolgende Aufgabe lösen.

BBCode ist eingeschaltet
[img] ist ausgeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Zahlenformat setzen

Re: Zahlenformat setzen

von Toxitom » So, 08.10.2017 18:19

Hey wonkwonk,

der Fehler liegt wahrscheinlich im falsch übergebenen Format-String. Du darfst nicht die Variante des UI verwenden!

Code: Alles auswählen

NumberFormatId = NumberFormats.addNew("0,000", LocalSettings)    '1 Dezimalen
müsste wahrscheinlich heissen:

Code: Alles auswählen

NumberFormatId = NumberFormats.addNew("0.000", LocalSettings)    '1 Dezimalen
Bevor Du so etwas verwendest, kannst Du Dir doch den entsprechenden Formatstring erzeugen lassen:

Code: Alles auswählen

msgbox NumberFormats.generateFormat(1,LocalSettings, true, false, 0, 4)
Die Methode erwartet 6 Parameter - siehe auch API com.sun.star.util.XNumberFormat -> generateFormat.

Das Ergebnis ist: "0.000". Setze ich den bei Dir ein und lasse mir den Formatcode ausgeben (msgbox), so kommt bei mir 10170 als Code.

Im übrigen solltest Du immer vorher abfragen, ob der Code nicht bereits existiert - ein zweites Mal lässt er sich nicht einfügen - gibt immer eine Fehlermeldung.

Also zuerst:

Code: Alles auswählen

msgbox NumberFormats.queryKey("0.000", LocalSettings,true)
Liefert die Code-Index bzw. -1, falls es diesen Code nicht gibt.

Und dann klappt es auch mit der Zuordnung ;)

Viele Grüße
Tom

Re: Zahlenformat setzen

von wonkwonk » So, 08.10.2017 17:27

Hallo,
mit dem Prinzip habe ich auch gearbeitet, wie an der Code-Zeile unten zu sehen ist. Es funktioniert aber nicht, wenn auch kein Absturz!
Gruss, wonk

Re: Zahlenformat setzen

von lorbass » Sa, 07.10.2017 19:36

Michael Dannenhöfers StarBasic / OpenOffice.org Basic FAQ:
7.1.22 Wie kann man das Zahlenformat auf Standardformate einstellen?

Gruß
lorbass

Zahlenformat setzen

von wonkwonk » Sa, 07.10.2017 18:17

Hallo,
ich versuche ein Zellformat auf eine Dezimale zu setzen. Mit dem folgende Code gelingt das zwar auf 3 Dezimalen, aber mit "0,0" nicht auf eine Dezimale (Absturz) mit "Message.". In dem Dokument für mich keine Zelle mit Formatierung "1 Dezimale" erkennbar, auch wenn Zahlen mit 1 Dezimale vorhanden sind.

Code: Alles auswählen

Sub Main
Dim NumberFormats As Object
Dim NumberFormatId As Long
Dim LocalSettings As New com.sun.star.lang.Locale

Doc = ThisComponent
Sheet = ThisComponent.sheets(0)
LocalSettings.Language = "de"
LocalSettings.Country = "de"
NumberFormats = Doc.NumberFormats
NumberFormatId = NumberFormats.addNew("0,000", LocalSettings)    '1 Dezimalen
Sheet.getCellRangeByPosition(3,1,3,1).NumberFormat = NumberFormatId
End Sub
Die Zeile
Sheet.getCellRangeByPosition(3,1,3,1).NumberFormat = 108 '1 Dezimale
funktioniert auch nicht.

Wo liegt der Fehler?

Gruss, wonk

Nach oben