Cell.Numberformat - wie korrekt einsetzen (Makro)

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

mecki_45
***
Beiträge: 69
Registriert: Mo, 23.02.2004 17:28

Cell.Numberformat - wie korrekt einsetzen (Makro)

Beitrag von mecki_45 »

Hallo zusammen,
ich möchte in einer Zellvorlage neben verschiedenen Zeichenattributen auch das Zahlenformat entsprechend anpassen. Hierzu gibt es einen Schalter "Cell.NumberFormat" - nur bekomme ich diesen nicht korrekt ans laufen.
Mein Wunsch wäre folgender:
Dia_xxxx =Y wobei xxxx für eine laufende Nr.steht.

Wie stelle ich das in einem Makro korrekt an?
Hier mein bisheriges Makro als Beispiel.

Sub Zellvorlage_DIA_erstellen
DIM oDoc As Object
DIM oMyCellStyle As Object
DIM CText As Object
DIM CContent As Object

'>>> Abfrage, ob Seitenvorlage vorhanden
'>>> Ist die Vorlage vorhanden, wird diese Routine beendet
On Error Goto Fehler
Stardesktop.CurrentComponent.StyleFamilies.getByName("CellStyles").getByName("Dia")
Msgbox "Zellenvorlage vorhanden"
exit sub

'>>> Vorlage ist nicht vorhanden und wird angelegt
Fehler:
Msgbox "Zellenvorlage ist nicht vorhanden und wird angelegt"

oDoc = StarDesktop.CurrentComponent
'neue Zellformatvorlage erstellen und Formatierungen festlegen
oMyCellStyle = oDoc.createInstance( "com.sun.star.style.CellStyle" )
oDoc.getStyleFamilies().getByName( "CellStyles" ).insertByName( "Dia", oMyCellStyle )

'>>> Schriftart setzen - *ARIAL*
oMyCellStyle.CharFontName = "Comic Sans MS"
'>>> Schriftgröße setzen - *10*
oMyCellStyle.CharHeight = 10
'>>> Schriftfarbe setzen - Hellblau
oMyCellStyle.CharColor = 255
'>>> Schriftattribut setzen - *FETT*
oMyCellStyle.CharWeight = com.sun.star.awt.FontWeight.BOLD
'>>> Horizontale und vertikale Ausrichtung - *ZENTRIERT*
oMyCellStyle.HoriJustify = com.sun.star.table.CellHoriJustify.CENTER
oMyCellStyle.VertJustify = com.sun.star.table.CellVertJustify.CENTER

'>>> Zahlenformat, angepaßt auf Dia - *Dia_xxxx*
oMyCellStyle.NumberFormat = "Dia_"+"000#"

'>>> Zell-Linie setzen - *UNTEN, GRAU*
linie = CreateUnoStruct("com.sun.star.table.BorderLine")
With linie
.Color = RGB( 160, 160, 160 )
.InnerLineWidth = 0
'löschen mit .OuterLineWidth = 0 möglich
.OuterLineWidth = 15
.LineDistance = 0
End With
' oMyCellStyle.TopBorder = linie
oMyCellStyle.BottomBorder = linie
' oMyCellStyle.LeftBorder = linie
' oMyCellStyle.RightBorder = linie
end Sub

Sub Zellvorlage_verwenden
oDoc = StarDesktop.CurrentComponent
oBereich = oDoc.getCurrentSelection()
ThisComponent.CurrentController.Select(oBereich)
With ThisComponent.CurrentSelection
.CellStyle = "Dia"
End With
End sub

Hoffe das hilft euch weiter

Grüßle
Alex
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

oMyCellStyle.NumberFormat = "Dia_"+"000#"
ich dachte bisher .NumberFormat sei ein kodierter numerischer Ausdruck, der das Format beschreibt... oder kann man das als String übergeben? Hast Du ein Beispiel dafür?

Stephan
mecki_45
***
Beiträge: 69
Registriert: Mo, 23.02.2004 17:28

Beitrag von mecki_45 »

Hallo Stephan,
ein Beispiel hab ich nicht - dachte es geht so wie ich es eingesetzt habe, tut es aber nicht.
Hast Du eine Idee, wie ich das anstellen muss?

Grüßle
Alex
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Hast Du eine Idee, wie ich das anstellen muss?
Nein habe ich nicht. Ich habe mal sowas hier im Forum diskutiert, da ging es aber um eines der vordefinierten Formate - ich habe die Formatierung mit dem Makrorekorder aufgezeichnet und mir dann die Zahl notiert die dem Format zugeordnet war. Da es aber bei Dir um ein benutzerdefiniertes Format geht kann es dafür wohl keine kodierte Zahl geben, denke ich. Ein anderer Weg ist mir bisher nicht bekannt.

Stephan
mecki_45
***
Beiträge: 69
Registriert: Mo, 23.02.2004 17:28

Beitrag von mecki_45 »

Hallo Stephan,

hab´s zu Fuß erledigt.
Sprich "Spalte markiert" und anschließend von oben nach unten die Zellinhalte in String gewandelt, meinen Index vorangesetzt und anschließend zurückgeschrieben - nicht schön,aber selten.


Grüßle
Alex
Antworten