Calc: Wert auf Tastendruck übernehmen

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

Moderator: Moderatoren

Andi_CH
***
Beiträge: 69
Registriert: Fr, 04.06.2010 09:21
Wohnort: Zürich

Calc: Wert auf Tastendruck übernehmen

Beitrag von Andi_CH »

Was ich machen möchte tönt ganz einfach (und ist es für einige von euch sicher auch , aber ... :-)

Thema Arbeitszeiterfassung. In einer Spalte steht die an einem Tag geleistete Arbeitzeit (Im der echten Tabelle wird die natürlich berechnet)

Die muss nun manuell auf verschiedene Projekte aufgeschlüsselt werden und eigentlich bin ich zu faul um immer auszurechnen wiviel denn nun noch übrigbleibt. Ich möchte auf einer beliebigen Zelle eines beliebigen Projektes per Tastendruck auslösen, dass die ganze Restzeit in dieses Feld geschrieben wird. (Feld allenfalls erst löschen, falls da schon ein Wert drin steht)
(Die Spalte "unverbucht" soll eben wegfallen - die war nur eine Hilfe bei der manuellen Eingabe)

Als zweites Feature möchte ich verhindern, dass zu viel verbucht wird. Also sollte bei jeder Eingabe überprüft werden ob die Summe grösser als das Total ist und wenn, dann (ist noch unklar)
- Feld gleich wieder löschen und Fehlermeldung anzeigen?
- Wert abrunden, dass die Summe 0 gibt?

Vermutlich heisst das Stichwort Makro, aber die Suche im wiki überfordert mich :shock: ich hab nur Anngaben dazu gefunden wie ich mit Makros ein Wiki verändere

Im ersten Anlauf bin ich schon mal froh um Links
- Wie ein Makro mit einem Event (Eingabe, Tastendruck, rechte Maustaste) verknüpft wird
- Wie man überhaut so eines schreibt.

Falls Makro nicht das Richtige ist - ich bin offen für alles was funktioniert



Moderation,4: verschoben in BASIC-Unterbereich, wo alle Makro-Fragen hin gehören; Betreff angepasst
Dateianhänge
StundenAufteilen.ods
(8.45 KiB) 143-mal heruntergeladen
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Calc: Wert auf Tastendruck übernehmen

Beitrag von komma4 »

Andi_CH hat geschrieben:Im ersten Anlauf bin ich schon mal froh um Links
- Wie ein Makro mit einem Event (Eingabe, Tastendruck, rechte Maustaste) verknüpft wird
- Wie man überhaut so eines schreibt.
Makro, Tastenzuordnung:
http://www.ooowiki.de/MakrosMitEinemKlick

Makro schreiben:
Andrews Makro-Dokument
Gibt davon auch eine veraltete Version in Deutsch auf Makros Seiten. "Veraltet" meint nicht "überholt und ungültig", sondern einfach "nicht aktuell und vollständig"

Hilfsmittel zur Objektuntersuchung: XRAY



Erste Fragestellung: den Wert aus Spalte F übernehmen habe ich Dir schon mal hier ausgeführt 8):


Code: Alles auswählen

Sub de49878

' Übernahme der Rest-Zeiten aus Spalte F in aktuelle Zelle

' 2011-08-21
sMakroName = "de49878"

oDok = ThisComponent

If Not oDok.supportsService(_
	"com.sun.star.sheet.SpreadsheetDocument" ) Then
	MsgBox _
		"Makro wurde nicht von einem Calc-Dokument aufgerufen." & CHR(10) _
		& CHR(10) & "Erklärung:" _
		& CHR(10) & "Dieses Makro ist für CALC-Dateien und funktioniert nur dort." _
		& CHR(10) _
		& CHR(10) & "Makro " & sMakroName & " wird nun beendet." _
		, 48 , sMakroName
	Exit Sub
End If


oAuswahl =  oDok.getCurrentSelection()

If NOT oAuswahl.supportsService(_
      "com.sun.star.sheet.SheetCell" ) Then
	Msgbox "Falsche Auswahl - es darf nur EINE Zelle gewählt sein", 16, sMakroName
	exit sub
end if


oQuelle = oDok.Sheets().getByIndex( _
   oAuswahl.CellAddress.Sheet ).getCellRangeByName( _
   "F" & oAuswahl.CellAddress.Row + 1 )
   
oAuswahl.setValue( oQuelle.getValue() )

End Sub

Zweite Fragestellung (Verbuchen grösser als Tagesstunden) würde ich mit bedingter Formatierung der Spalte "F" lösen (rot anzeigen)
http://www.ooowiki.de/CalcFormatBedingt


Kannst Du damit was anfangen?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Andi_CH
***
Beiträge: 69
Registriert: Fr, 04.06.2010 09:21
Wohnort: Zürich

Re: Calc: Wert auf Tastendruck übernehmen

Beitrag von Andi_CH »

Vorerst nur mal kurzen Dank an alle, ich habe in den nächsten Tagen andere Prioritäten, aber ich schaue mir die Vorschläge sicher später noch ganz genau an.
(@Komma4: Bedingte Formatierung habe ich im Griff - wenigstens meistens ;-) )
Andi_CH
***
Beiträge: 69
Registriert: Fr, 04.06.2010 09:21
Wohnort: Zürich

Re: Calc: Wert auf Tastendruck übernehmen

Beitrag von Andi_CH »

Ich habe das Makro eingebaut und auf F3 gelegt. Der Wert wird übernommen - nahezu perfekt :-)

Ich habe noch eingebaut, dass erst 0 hineingeschrieben wird - sonst wird der schon vorhandene Wert mit berücksichtigt und das führt zu einem falschen Resultat.
Berechnet wird nur noch, wenn das Resultat >0 ist. (He - wer grinst da - das ist für mich alles neu :lol: )

(So nebenbei: wie kann ich verhindern, dass 00:00 angezeigt wird? leere Zellen gefallen mir besser)

So, nun das was ich nicht geschafft habe:

Kann ich einschränken, dass das Makro nur ausgeführt wird, wenn der Fokus (also das Ausgabefeld) in einer der Projektspalten (B-E) steht? (Das ist aber leider kein konstanter Bereich, denn je nach Bedarf werden Projekte eingefügt - was könnte man vorkehren um das trotzdem detektieren zu können?)

Die Konstante "F" im Makro stört mich auch - das wird definitv nicht immer "F" sein, egal wo ich die hin schiebe - kann ich z.B. nach einem Wert in Zeile A suchen?
Den Wert aus F gleich im Makro berechnen geht sicher auch - ich habe mir noch nicht übelegt wie.

Und jetzt kommt noch eine typische Chef-Frage :-) Kann ein Makro auch auf das Kontextmenu (rechte Maustaste) gelegt werden (Ich arbeite eigentlich nie mit dem Kontextmenu)

Ich weiss schon was er morgen fragt, er hat jetzt Zeit um nachzudenken: Kann man auch führ mehrere Zellen bzw. eine ganze Spalte (z.B. "E") die Werte übernehmen?
- Detektieren ob der Range eindimensional ist - und zwar in der Höhe
- loop bauen (kann man Makros auch rekursiv aufbauen - gibt es Aufrufparameter?)
Antworten