Hallo,
um das sauber zu lösen, müsste zunächst die korrekter Nummer des Zahlenformats herausgefunden werden.
Das geht z. B. mit folgender Funktion:
Code: Alles auswählen
Function numkey (formatstring)
Dim sLocale as New com.sun.star.lang.Locale
NumForms = ThisComponent.getNumberFormats()
NumKey = NumForms.queryKey(FormatString, sLocale, True)
IF NumKey = -1 Then '-1 means no value found for the requested format
NumKey = NumForms.addNew(FormatString, sLocale) 'create a new key
end if
End Function
Sie liefert die Nummer des übergebenen Zahlenformats (als formatstrings). Sollte es noch nicht existieren, wird es gleich mit angelegt.
Dann kannst du es in deinem Code verwenden, z. B. so (etwas abgewandelt):
Code: Alles auswählen
sub main
...
setDecInCol(4,"#.##0,00;[ROT]-#.##0,00")
...
end sub
sub setDecInCol(S,F)
Thiscomponent.CurrentController.ActiveSheet.Columns(S).NumberFormat = numkey(F)
end sub
Ob für so einen Einzeiler eine extra Sub sinnvoll ist ... Wenn in der sub main die gewünschte Tabelle schon angesprochen wurde, z. B.
dann würde sich das ganze ja auf
Code: Alles auswählen
sub setDecInCol(S,F)
Tabelle.Columns(S).NumberFormat = numkey(F)
end sub
reduzieren.