Funktion Kürzen() im Makro benutzen

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

Moderator: Moderatoren

MrMurphy
***
Beiträge: 66
Registriert: Mo, 12.06.2006 12:34

Funktion Kürzen() im Makro benutzen

Beitrag von MrMurphy »

Hallo,

wie kann ich die Funktion Kürzen() in ein Makro einbauen?

Zum Berechnen von Zeiten werden die letzten beiden Stellen einer Zahl als Minuten betrachtet und sollen in entsprechende Dezimalzahlen umgerechnet werden. Zur Zeit funktioniert das so:

In Zelle C6 steht die Zahl 741 (das soll 7:41 Uhr entsprechen).

In Zelle P6 steht die Formel:
=C6/100-(C6/100-(KÜRZEN(C6/100)))+((C6/100-(KÜRZEN(C6/100)))*10/6)
das ergibt wie gewüscht 7,68

730 (entspricht 7:30 Uhr) ergibt entsprechend 7,5

Um weitere Berechnungen einfacher durchführen zu können möchte ich die Berechnung in einem Makro (meinem Ersten) durchführen. Ich möchte in die Zelle P6 dann einfach "ZeitzuZahl(A6)" eintragen. Meine (wahrscheinlich zu einfache) Idee funktioniert leider nicht:

Function ZeitZuZahl(Zeit)
ZeitZuZahl = Zeit/100-(Zeit/100-(KÜRZEN(Zeit/100)))+((Zeit/100-(KÜRZEN(Zeit/100)))*10/6)
End Function

Offensichtlich ist die Funktion Kürzen() dem Makro nicht bekannt. Wie funktioniert das Makro richtig?

Gruss

MrMurphy
Benutzeravatar
lorbass
********
Beiträge: 4116
Registriert: Mo, 01.05.2006 21:29
Wohnort: Bonn

Re: Funktion Kürzen() im Makro benutzen

Beitrag von lorbass »

Int() (von Integer) gibt den Ganzzahl-Anteil einer Zahl zurück und verwirft die Dezimalstellen. Bei dir muss es also Int(Zeit/100) heißen.

Gruß
lorbass
Karolus
********
Beiträge: 7534
Registriert: Mo, 02.01.2006 19:48

Re: Funktion Kürzen() im Makro benutzen

Beitrag von Karolus »

Hallo
Wenn du Calc-funktionen in Basic verwenden möchtest, musst du hier nachlesen.
In deinem Fall tuns auch die Laufzeitfunktionen 'fix' oder 'int' oder auch \ als Operator:

Code: Alles auswählen

function zahlzuzeit(x)
zahlzuzeit = x \ 100 + (x mod 100) / 60
End function
Siehe dazu auch:
http://www.dannenhoefer.de/faqstarbasic ... ml#Zweig30
http://www.dannenhoefer.de/faqstarbasic ... ml#Zweig34

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
MrMurphy
***
Beiträge: 66
Registriert: Mo, 12.06.2006 12:34

Re: Funktion Kürzen() im Makro benutzen

Beitrag von MrMurphy »

Hallo,

vielen Dank für die Antworten, das funktioniert.

Aus den Gegenüberstellungen der deutschen und englischen Funktionen wollte ich gleich mal runden = round ausprobieren. Das funktioniert leider nicht. Ohne Runden funktioniert die Funktion:

Function ZahlZuZeit (Zahl)
ZahlZuZeit = ((Zahl-int(Zahl))*0.6+int(Zahl))*100
End Function

Mit Runden leider nicht mehr:

Function ZahlZuZeit (Zahl)
ZahlZuZeit = round(((Zahl-int(Zahl))*0.6+int(Zahl));2)*100
End Function

Was mache ich hier falsch? Calc gibt die Fehlermeldung "Fehler in der Klammerschachtelung", obwohl ich die Funktion genau wie runden(Zahl;Nachkommastellen) eintrage, also round(...;2) einfüge.

Gruss

MrMurphy
Benutzeravatar
lorbass
********
Beiträge: 4116
Registriert: Mo, 01.05.2006 21:29
Wohnort: Bonn

Re: Funktion Kürzen() im Makro benutzen

Beitrag von lorbass »

MrMurphy hat geschrieben:Was mache ich hier falsch?
Das ist einfach festzustellen: Du bist Karolus' Link nicht gefolgt und versuchst schon wieder, eine Calc-Funktionen direkt in Basic zu verwenden.

Gruß
lorbass
Antworten