🙏 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!🍀
>> 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
[Gelöst] Im Makro Stunden berechnen und ausgeben
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.
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
Windows 11, Libre 24,2,7,2
Re: Im Makro Stunden berechnen und ausgeben
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.
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
Windows 11, Libre 24,2,7,2
Re: Im Makro Stunden berechnen und ausgeben
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
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.
Re: Im Makro Stunden berechnen und ausgeben
Hallo,
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.
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.)Geht das so einfach ?
Das geht sicher, aber zunächst sollte ListBox7 keine Listbox, sondern wohl ein Textfeld oder Beschriftungsfeld sein.oder geht es überhaupt nicht das beide Werte dann ListenBox7 ergeben
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
mikele
Re: Im Makro Stunden berechnen und ausgeben
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
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
Windows 11, Libre 24,2,7,2
Re: Im Makro Stunden berechnen und ausgeben
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ß.
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
Windows 11, Libre 24,2,7,2
Re: Im Makro Stunden berechnen und ausgeben
Hallo,
so auf die Schnelle ...
so auf die Schnelle ...
- Dateianhänge
-
- Fahrtenbuch.ods
- (22.97 KiB) 224-mal heruntergeladen
Gruß,
mikele
mikele
Re: Im Makro Stunden berechnen und ausgeben
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...!!!
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
Windows 11, Libre 24,2,7,2
Re: [Gelöst] Im Makro Stunden berechnen und ausgeben
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.
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
mikele
Re: [Gelöst] Im Makro Stunden berechnen und ausgeben
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 !
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
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.