Hallo Leute,
es wird mal langsam wieder Zeit das ich auch ein wenig mitmische. Und deshalb schalte ich in den "Klugscheißer-Modus"
Karolus hat geschrieben:
Warum soll das per Makro geschehen, obwohl exakt dieses Format über einen Button in der Format-Symbolleiste einstellbar ist ??
Würde mich auch interessieren. Aber vielleicht dient das ja als Übung für andere Währungsformate, wer weiss?
@Tom
Toxitom hat geschrieben:
ganz so einfach geht es leider nicht.
Teilweise stimt das, aber andserseits auch wiederum nicht.
Toxitom hat geschrieben:
Der NummernFormat Code ist leider nicht automatisch da in einer Datei. Wenn Ihr eine leere Datei starten würdet und den Code direkt laufen last, so wird entweder gar nichts passieren oder es gibt einen Basic-Runtime Error - "nicht erkannter Code".
Dem kann ich zustimmen.
Jedoch, und jetzt kommen wir zur gegensätzlichen Behauptung, stimmt das nicht immer. Denn wenn es um Datum und Zeit geht, dann kann man auch in einer neuen und leeren Datei folgenden Code laufen lassen.
Code: Alles auswählen
sub Main
ThisComponent.Sheets(0).getCellRangeByName("L2").Numberformat = 40
end sub
Und wenn in L2 folgender Wert steht: 12345, dann wird auch die Formatierung angewendet.
In OO.o 3.2.1 würde das dann so aussehen.
In der Zelle L2 ist dann das hier zu sehen:
00:00
Aber oben in der Eingabezeile steht dort folgendes:
296280:00:00
Und in LO 5.1.5.2 sieht das dann wie folgt aus.
In der Zelle L2 ist dann das hier zu sehen:
00:00
Aber oben in der Eingabezeile steht dort folgendes:
18.10.1933 00:00:00
Zwischen den beiden genannten Officen gibt es wohl einen winzig kleinen Unterschied, der jetzt aber nicht von Interesse ist, da hiermit bewiesen ist das eine direkte Formatierung bei Datum und Zeit durchaus funktioniert.
Warum das aber bei Währung nicht funktioniert, verstehe ich momentan auch nicht, bleibt mir erstmal ein Rätsel. Und deshalb dachte ich mir so:
"Vielleicht hilft es ja, wenn ich einen bestimmten Modus einschalte? Denn diesen Modus habe ich ja für Datum und Zeit schon erfolgreich angewendet."
Und dieser Modus lautet:
CompatibilityMode
Code: Alles auswählen
sub Main
CompatibilityMode(True)
ThisComponent.Sheets(0).getCellRangeByName("L2").Numberformat = 107
CompatibilityMode(False)
end sub
Aber der hilft auch nicht.
Also einen Schritt weiter, der wiederum nur bei Datum und Zeit funktioniert.
Code: Alles auswählen
sub Main
CompatibilityMode(True)
ThisComponent.Sheets(0).getCellRangeByName("L2").FormulaLocal = FormatDateTime(TimeValue(NOW), 4) ' = Uhrzeit
ThisComponent.Sheets(0).getCellRangeByName("L2").Numberformat = 40
CompatibilityMode(False)
end sub
Vielleicht müsste ja nur
FormatDateTime durch den richtigen "Befehl" ersetzt werden, damit auch die Währung direkt angewendet werden kann und zwar ohne irgendwie vorher etwas auszulesen? Jedoch weiss ich momentan nicht wie der passende "Befehl" lautet.
So, das wars auch schon, und ich schalte den "Klugscheißer-Modus" wieder aus. *lach-lach-lach*
Gruß
balu