Macros mit Vorzeichen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

yazoo
****
Beiträge: 133
Registriert: Mo, 07.01.2008 01:25

Macros mit Vorzeichen

Beitrag von yazoo »

Ich weis nicht wie es beschreiben soll, aber ich habe folgendes Problem. Wenn man z B. mittels Makro das Rechnerdatum einfügt, bekommt es immer ein Vorzeichen. von dem ich auch nicht weiß, was es für ein Vorzeichen ist, auf jeden Fall sieht es so aus :
'24.01.2023.

Ein Apostrof wie es sich auf der Shift #>-Taste befindet, ist es nicht. Die Frage ist, warum wird das Zeichen überhaupt gesetzt, da es bei der weiterer Verwendung doch sehr stören kann, und man es immer manuell entfernen muss. Kann man verhindern, dass solche zusätzlichen Zeichen (und was hat es überhaupt damit auf sich)
überhaupt gesetzt werden?
craig22
****
Beiträge: 135
Registriert: Mi, 19.08.2020 13:47

Re: Macros mit Vorzeichen

Beitrag von craig22 »

Hallo,

in Calc kann man aus jeder Zahl eine Ziffer nachen, in dem man der Zahl ein Apostroph voransetzt.
Mit einer Ziffer (einem String) kann man nicht rechnen.
Das Datum und die Uhrzeit sind aber intern Dezimalzahlen, sonst könnte Calc keine Berechnungen durchführen.
Dabei gilt folgendes:
  1. Stellen vor dem Komma sind Daten (Datum)
  2. Stellen nach dem Komma betrifft die Uhrzeit (Stunden, Minuten und Sekunden)
Die Basis für die Berechnung dieser Daten ist das voreingestellte Basisdatum mit der Uhrzeit 00:00:00
Siehe:
Menü Extras → Einstellugen → OpenOffice Calc
→ Datum = 30.12.1899
Dies ist der Tag 0 und die Uhrzeit 00:00:00

Zur Analyse der Zeiten empfiehlt es sich das Zahlenformat der Zelle auf 15-Nachkommastellen einzustellen.

Tag 0 + 1 Sekunde = 0,000011574074074
1 Sekunde = 1/24/60/60
1 Minutee= 1/24/60
1 Stunde = 1/24

Bei Uhrzeit 23:59:59 + 1 Sekunde erfolgt der Sprung auf den nächsten Tag und die Uhr wird auf 00:00:00 zurückgesetzt:
Dies ist der Tag 1 und die Uhrzeit 00:00:00 = 1,0

Daraus folgt für das heutige Datum bei 00:00:00 Uhr:

44950,000000000000000

Somit ist der Heute der 44.950-zigste Tag nach dem Basisdatum.

Im Makro muss man nun einen Datumswert vom Datentyp „Double“ errechnen und diesen Wert in eine Zelle schreiben.
Damit aber daraus ein lesbares Datum wird, muss zusätzlich der Zahlformatcode gesetzt werden.

Die Umwandlung von einer Dezimalzahl für den heutigen Tag nimmt Calc automatisch vor, wenn der richtige Zahlformatcode (DD.MM.JJJJ) gesetzt wurde.
So wird dann aus:
44950,000000000000000
das Stringformat
24.01.2023
oder auch:
24.01.2023 00:00:00

Beispiele für den Befehl „Numberformat“
https://www.dannenhoefer.de/faqstarbasi ... dardformat

Code: Alles auswählen

Sub Datum()
Dim oSel As Object

	oSel = thisComponent.CurrentSelection
			oSel.NumberFormat=36 	' ZellformatCode für DD.MM.YYYY
				osel.Value=Now()	
End Sub
Gruß

Craig
_____________________________________________________
WIN 10 Pro 64-Bit • LO 7.1.5.2 (x64) • AOO 4.1.8
Antworten