Hi,
ich habe ein Dokument das mit vielen Uhrzeiten gefüllt werden muss. Dabei ist es lästig immer wieder den Doppelpunkt zu tippen.
Gibt es eine Möglichkeit nur 4 Ziffern einzutippen und dann automatisch in eine Uhrzeit umzuwandeln (1200 -> 12:00)
Ich hab schon über Daten/Gültigkeit/Makro versucht einen "ungültigen-4-ziffern" Eingabewert mit einem Doppelpunkt zu versehen und in die aktuelle Zeile zurückzuschreiben. Allerdings wird dieser Wert danach wieder durch den "ungültigen-4-ziffern" Wert ersetzt.
Tobias
Uhrzeiten eingeben
Moderator: Moderatoren
Hallo Stephan,
Treffer und versenkt
Allerdings wird beim Verlassen einer Zelle die neue Zelle in event.source übermittelt. Man muss also letztlich die Zelle des vorherigen Aufrufs bearbeiten.
Danke und Gruß,
Tobias
Treffer und versenkt

Allerdings wird beim Verlassen einer Zelle die neue Zelle in event.source übermittelt. Man muss also letztlich die Zelle des vorherigen Aufrufs bearbeiten.
Code: Alles auswählen
Global oRecentSelection As Object
REM What to do when we get an event:
Sub MyApp_selectionChanged(oEvent)
' the source property of the event struct
' gets a reference to the event source,
' in this case, NOT the onscreen selection,
' but rather the currentController:
oSelection = oRecentSelection
oRecentSelection = oEvent.source.selection
'Only if oSelection is a single cell
if oSelection.supportsService ("com.sun.star.sheet.SheetCell") then
'columns 1 and 2 are our timestamps
if (oSelection.CellAddress.column = 1) or (oSelection.CellAddress.column = 2) then
'modify only if cell contains 4 characters and no colon
if (len (oSelection.String) = 4) and (InStr (oSelection.String, ":") = 0) then
oSelection.Formula = Left (oSelection.Value, 2) + ":" + Right (oSelection.Value, 2)
oSelection.NumberFormat = 40
end if
end if
end if
End Sub
Tobias
Frage zu Daten/Gültigkeit...
Hallo Leute,
ich habe zu diesem Thema eine weiterführende Frage:
Weiß jemand von Euch wie ich dieses Feature
Daten, Gültigkeit, Zeit, Stop
in einen über Java erstellten Cell-Type o.ä pressen kann.
Zur Erläuterung:
Ich erzeuge mir mit Java-dynamisch eine OO-Calc-Dokument, in dem ich Zeiten eingeben will. Auf diese Zeiten wird später mit einem Makro zugegriffen. Falls in der Zelle nun KEINE Zeit steht, meldet mir mein Makro einen Fehler im Aufruf und startet OO-Basic-zum Debuggen ja ok,
aber im Gebrauch nicht. Eine nach obigen Muster behandelte Zelle verhinder aber die Eingabe einer "Nicht-Zeit"
Vielen Dank
Raabun
ich habe zu diesem Thema eine weiterführende Frage:
Weiß jemand von Euch wie ich dieses Feature
Daten, Gültigkeit, Zeit, Stop
in einen über Java erstellten Cell-Type o.ä pressen kann.
Zur Erläuterung:
Ich erzeuge mir mit Java-dynamisch eine OO-Calc-Dokument, in dem ich Zeiten eingeben will. Auf diese Zeiten wird später mit einem Makro zugegriffen. Falls in der Zelle nun KEINE Zeit steht, meldet mir mein Makro einen Fehler im Aufruf und startet OO-Basic-zum Debuggen ja ok,
aber im Gebrauch nicht. Eine nach obigen Muster behandelte Zelle verhinder aber die Eingabe einer "Nicht-Zeit"
Vielen Dank
Raabun
Leider funktioniert obige Lösung mit OO2 nicht mehr richtig. Deshalb hier die Anpassung an Openoffice 2.0, getestet mit Beta Build 1.9.79:
Gruß, Tobias
Code: Alles auswählen
Global oRecentSelection As Object
REM What to do when we get an event:
Sub MyApp_selectionChanged(oEvent)
' the source property of the event struct
' gets a reference to the event source,
' in this case, NOT the onscreen selection,
' but rather the currentController:
oSelection = oRecentSelection
oRecentSelection = oEvent.source.selection
'Only if oSelection is a single cell
if oSelection.supportsService ("com.sun.star.sheet.SheetCell") then
'columns 1 and 2 are our timestamps
if (oSelection.CellAddress.column = 1) or (oSelection.CellAddress.column = 2) then
'if cell formula is less then 1 then it is already a valid time.
if oSelection.Formula >= 1 then
recentString = oSelection.Formula
while (len (recentString) < 4)
recentString = "0"+recentString
wend
recentString = Left (recentString, 2) + ":" + Right (recentString, 2)
oSelection.Formula = recentString
oSelection.NumberFormat = 40
end if
end if
end if
End Sub
Re: Uhrzeiten eingeben
Hallo,
habe etwas in der Richtung: als Beispiel (mit meinen Zellen):
Spalte "L" formatiert mit > 00":"00 < (NullNullAnf.-zeichenDoppelp.Anf.-zeichenNullNull) - hier werden die Uhrzeiten eingetragen -> 106 für 01:06 Uhr, 34 für 00:34 Uhr ...
in Spalte "N" steht folgende Formel, welche die in "L" eingetragene Zahl in eine Uhrzeit umwandelt (formatiert mit 876613:37 [Std:Min]): =WENN(ISTZAHL(L5);(GANZZAHL(L5/100)*60+RECHTS(L5;2))/60/24;0)
Die Hilfsspalte "N" blende ich aus, muss keiner sehen, wird aber für die Berechnung herangezogen.
Hilft das? Benutze ich seit Jahren und kommt ohne Makro aus.
Gruß.
gripslund
habe etwas in der Richtung: als Beispiel (mit meinen Zellen):
Spalte "L" formatiert mit > 00":"00 < (NullNullAnf.-zeichenDoppelp.Anf.-zeichenNullNull) - hier werden die Uhrzeiten eingetragen -> 106 für 01:06 Uhr, 34 für 00:34 Uhr ...
in Spalte "N" steht folgende Formel, welche die in "L" eingetragene Zahl in eine Uhrzeit umwandelt (formatiert mit 876613:37 [Std:Min]): =WENN(ISTZAHL(L5);(GANZZAHL(L5/100)*60+RECHTS(L5;2))/60/24;0)
Die Hilfsspalte "N" blende ich aus, muss keiner sehen, wird aber für die Berechnung herangezogen.
Hilft das? Benutze ich seit Jahren und kommt ohne Makro aus.
Gruß.
gripslund
Re: Uhrzeiten eingeben
Moderationshinweise
1. Bitte Vollzitate (längerer) vorhergehender Beiträge vermeiden. Sie sollte soweit gekürzt werden, dass verständlich bleibt, worauf sich die eigene Antwort beziehen soll. Das gilt erst recht, wenn das Zitat selbst auf ein vorangegangenes Zitat bezieht.
2. Bitte keine "alten" Threads mehr aufwärmen.
Siehe auch Allgemeinen Hinweise zur Forumsbenutzung (dort unter: "Eröffnet neue Threads").
Eröffne bitte einen neuen Thread mit Deiner Frage.
Thread gesperrt.
lorbass, Moderator
1. Bitte Vollzitate (längerer) vorhergehender Beiträge vermeiden. Sie sollte soweit gekürzt werden, dass verständlich bleibt, worauf sich die eigene Antwort beziehen soll. Das gilt erst recht, wenn das Zitat selbst auf ein vorangegangenes Zitat bezieht.
2. Bitte keine "alten" Threads mehr aufwärmen.
Siehe auch Allgemeinen Hinweise zur Forumsbenutzung (dort unter: "Eröffnet neue Threads").
Eröffne bitte einen neuen Thread mit Deiner Frage.
Thread gesperrt.
lorbass, Moderator