Uhrzeiten eingeben

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

tobik
Beiträge: 3
Registriert: Mi, 02.06.2004 22:41
Kontaktdaten:

Uhrzeiten eingeben

Beitrag von tobik »

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
tobik
Beiträge: 3
Registriert: Mi, 02.06.2004 22:41
Kontaktdaten:

Beitrag von tobik »

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.

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
Danke und Gruß,
Tobias
Raabun
**
Beiträge: 26
Registriert: So, 27.06.2004 14:13

Frage zu Daten/Gültigkeit...

Beitrag von Raabun »

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
tobik
Beiträge: 3
Registriert: Mi, 02.06.2004 22:41
Kontaktdaten:

Beitrag von tobik »

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:

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
Gruß, Tobias
gripslund
***
Beiträge: 82
Registriert: So, 04.06.2006 09:46

Re: Uhrzeiten eingeben

Beitrag von gripslund »

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
Benutzeravatar
lorbass
********
Beiträge: 4116
Registriert: Mo, 01.05.2006 21:29
Wohnort: Bonn

Re: Uhrzeiten eingeben

Beitrag von lorbass »

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
Gesperrt