🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[Gelöst] Im Makro Stunden berechnen und ausgeben

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Benutzeravatar
Roland1
Beiträge: 82
Registriert: Sa 15. Jan 2022, 11:01

[Gelöst] Im Makro Stunden berechnen und ausgeben

Beitrag von Roland1 » Sa 31. Aug 2024, 17:54

Hallo, hab wieder ein kleines Problem

Ich möchte in einer Calc Tabelle aus zwei Werte, im Makro die Zwischenzeit berechnen.

Listenfeld 1 Minus Listenfeld 2 ist Listenfeld 3.


REM ***** BASIC *****

Dim odialog as object, oTab as object
Dim n as integer 'akutelle Zeile


Sub Main
'ZUgriff auf Dokument
oDoc=ThisComponent
'aktuelle Tabelle
oTab=oDoc.CurrentController.ActiveSheet
'Bestimme letzte bentzte Zelle
oCur=oTab.createCursor
oCur.gotoEndOfUsedArea(False)
n=oCur.rangeaddress.startrow+1
'Zugriff auf Dialog
DialogLibraries.loadLibrary( "Standard")
oLib = DialogLibraries.getByName("Standard")
oDialog = CreateUnoDialog(oLib.getByName("Dialog1"))
'Setze aktuelles Datum
octrdate=odialog.getcontrol("DateField1")
octrdate.date=cdatetounodate(now())
'Starte Dialog
x=oDialog.execute
End Sub

sub uebernehmen
octrdate=odialog.getcontrol("DateField1")
octrkat=odialog.getcontrol("ListBox1")
octrfehler=odialog.getcontrol("ListBox2")
octrbedin=odialog.getcontrol("ListBox3")
octrbemerk=odialog.getcontrol("ListBox4")
octrank=odialog.getcontrol("ListBox5")
octrabf=odialog.getcontrol("ListBox6")
oergebnis=odialog.getcontrol("ListBox7")

rem ergebnis=(ListBox6-Listbox5)=odialog.getcontrol("ListBox7")

oTab.getcellbyposition(1,n).value=CDateFromUnoDate(octrdate.date)
oTab.getcellbyposition(2,n).string=octrkat.SelectedItem
oTab.getcellbyposition(3,n).string=octrfehler.SelectedItem
oTab.getcellbyposition(4,n).string=octrbedin.SelectedItem
oTab.getcellbyposition(5,n).string=octrbemerk.SelectedItem
oTab.getcellbyposition(6,n).string=octrank.SelectedItem
oTab.getcellbyposition(7,n).string=octrabf.SelectedItem
oTab.getcellbyposition(8,n).string=oergebnis.SelectedItem

'Zeilenzähler erhöhen
n=n+1

end sub


function oergebnis
oergebnis=(octrabf-octrank)

end function


Geht das so einfach ? oder geht es überhaupt nicht das beide Werte dann ListenBox7 ergeben.
Schon mal vielen dank fürs durchlesen.
Dateianhänge
Fahrtenbuch.ods
(22.64 KiB) 192-mal heruntergeladen
Zuletzt geändert von Roland1 am So 8. Sep 2024, 17:34, insgesamt 1-mal geändert.
Gruß Roland
Windows 11, Libre 24,2,7,2

Benutzeravatar
Roland1
Beiträge: 82
Registriert: Sa 15. Jan 2022, 11:01

Re: Im Makro Stunden berechnen und ausgeben

Beitrag von Roland1 » Fr 6. Sep 2024, 17:13

Hallo,

entweder sind alle spezis im Urlaub, oder was ich machen möchte ist nicht machbar.
Oder ich habe einen falschen Ansatz.

ich bin für jede Lösung Dankbar.
Gruß Roland
Windows 11, Libre 24,2,7,2

Benutzeravatar
RPP63
Beiträge: 172
Registriert: Sa 21. Apr 2018, 09:33

Re: Im Makro Stunden berechnen und ausgeben

Beitrag von RPP63 » Fr 6. Sep 2024, 17:59

Vielleicht das falsche Unterforum?
Probiere es mal unter Programmierug.
Ich könnte nur bei VBA helfen, aber das ist ja ne andere Baustelle.

Gruß Ralf
Ein Feedback auf eine gegebene Lösung tut nicht weh und zeigt Querlesern, dass das Problem gelöst ist.

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: Im Makro Stunden berechnen und ausgeben

Beitrag von mikele » Fr 6. Sep 2024, 22:43

Hallo,
Geht das so einfach ?
Ich gehe einmal davon aus, dass du deinen Code getestet hast. Damit hast du ein Ergebnis. Mir ist allerdings an dem Punkt nicht klar, was "das" ist. (Das Makro läuft zumindest fehlerfrei durch.)
oder geht es überhaupt nicht das beide Werte dann ListenBox7 ergeben
Das geht sicher, aber zunächst sollte ListBox7 keine Listbox, sondern wohl ein Textfeld oder Beschriftungsfeld sein.
Ich vermute jetzt mal, dass in dem Element ListBox7 die Fahrtdauer berechnet werden soll. Wenn es keine Fahrten über 24:00 Uhr hinweg (also mehrere Tage) gibt, dann ist es natürlich die Differenz der Werte von ListBox6 und ListBox5. Damit das berechnet wird, müsste ein Makro auf Eingabe in diesen beiden Feldern reagieren und in dem Fall, dass beide einen sinnvollen Wert haben, rechnen.
Gruß,
mikele

Benutzeravatar
Roland1
Beiträge: 82
Registriert: Sa 15. Jan 2022, 11:01

Re: Im Makro Stunden berechnen und ausgeben

Beitrag von Roland1 » Sa 7. Sep 2024, 12:57

Hallo Ralf,

dachte das Programmier Forum ist nur für die Programierung des Programmes, nicht für ein Calc Makro.

Danke für den Tipp
Gruß Roland
Windows 11, Libre 24,2,7,2

Benutzeravatar
Roland1
Beiträge: 82
Registriert: Sa 15. Jan 2022, 11:01

Re: Im Makro Stunden berechnen und ausgeben

Beitrag von Roland1 » Sa 7. Sep 2024, 13:10

Hallo Mikele,
das Makro läuft sauber weil ich die Ergebniss Ausgabe "ge REM t" habe.

Ich habe jetzt das Listenfield als Texfield ertsellt, funzt leider noch nicht. Ich bin dran, mir gehen aber die Denkanstöße aus.

Das ausrechnen funktioniert so leider nicht

ergebnis=Range.Value("ListBox6-ListBox5")

Danke für den denkanstoß.
Gruß Roland
Windows 11, Libre 24,2,7,2

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: Im Makro Stunden berechnen und ausgeben

Beitrag von mikele » Sa 7. Sep 2024, 21:04

Hallo,
so auf die Schnelle ...
Dateianhänge
Fahrtenbuch.ods
(22.97 KiB) 224-mal heruntergeladen
Gruß,
mikele

Benutzeravatar
Roland1
Beiträge: 82
Registriert: Sa 15. Jan 2022, 11:01

Re: Im Makro Stunden berechnen und ausgeben

Beitrag von Roland1 » So 8. Sep 2024, 17:34

Wouw Mikele,

bin richtig froh und beeindruckt. Danke

die "Sub dauer" hätte ich niemals hinbekommen.

In den Anleitungen und Hilfen finde ich das nie was ich suche, am besten versteh ich es, wenn ich das Makro durchlese.

Vielen Danke genau so...!!!
Gruß Roland
Windows 11, Libre 24,2,7,2

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: [Gelöst] Im Makro Stunden berechnen und ausgeben

Beitrag von mikele » So 8. Sep 2024, 18:47

Hallo,
die Listenfelder berechnen sich nicht automatisch bzw. mit ihnen kann man praktisch nucht rechnen (höchstens mit ihren Inhalten). Dabei ist hier noch zu beachten, dass die Listenfleder Texte enthalten, die zum Rechnen erst in Zahlen gewandelt werden müssen.
Um nun die Dauer zu berechnen, wird jedesmal, wenn eine Zeit eingetragen wird die Sub "dauer" aufgerufen. An der Stelle hat es (aus meiner Sicht) nur Informationscharakter. Um später die Tabellenzelle zu füllen, könnte man auch nur dort die Rechnung machen (die Berechnung erfolgt in der Sub uebernehmen unabhängig vom Rest).
ich habe mal noch ein bisschen herumgespielt und aus dem Textfeld ein Beschirftungsfeld gemacht.
Theortisch könnte/müsste man noch abfangen, dass sinnvolle Zeiten eingetragen werden und auch sonst alle notwendigen Eintragungen gemacht wurden, bevor es ans Übernehmen geht.
Ergänzend werden die Listenfelder jetzt mit den Daten aus dem Tabellenblatt "Daten" gefüllt. Das macht sich bei Änderungen besser.
Dateianhänge
Fahrtenbuch.ods
(22.71 KiB) 218-mal heruntergeladen
Gruß,
mikele

Benutzeravatar
Roland1
Beiträge: 82
Registriert: Sa 15. Jan 2022, 11:01

Re: [Gelöst] Im Makro Stunden berechnen und ausgeben

Beitrag von Roland1 » Di 10. Sep 2024, 17:31

Danke Mikele,

immer wieder schön.

"Abfangen das die Zeiten stimmen" bin froh das ich es soweit geschafft hab ;-)
Das macht mir voll spaß aber mir fehlt da noch einiges bis ich soweit bin wie du.

Vielen dank, auch für die Erleuterungen.
super !
Gruß Roland
Windows 11, Libre 24,2,7,2


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten