You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users-de@openoffice.apache.org by Wolfgang Jäth <ja...@arcor.de> on 2017/05/25 08:32:38 UTC

Aufrunden in Basic-Makro?

Hi,

ich verzweifel gerade; ich müsste in einem Makro (also Basic) einen Wert
*aufrunden*, finde aber dazu keine Funktion. Gibt es wirklich nur INT
bzw. FIX (die aber lediglich *abrunden*), oder bin ich blind?

Gips evtl. irgend einen Workaround? Im Internet hab ich z. B. so was wie

| WorksheetFunction.Round(2.7, 2)

gefunden, aber da meckert mein (deutsches) OO eine nicht belegte
Objektvariable an.

Wolfgang
-- 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org


Re: Aufrunden in Basic-Makro?

Posted by Wolfgang Jäth <ja...@arcor.de>.
Am 25.05.2017 um 13:48 schrieb Mechtilde:
> Hallo Wolfgang,
> 
> mit der Funktion "Runden" wir auf die nächste ganze Zahl gerundet. 

Das weiß ich; aber das eintscheidende ist, die Funktion RUNDEN ist eine
*Calc*-Funktion, keine *Basic*-Funktion.

Das Makro schreibt Calc-Formeln in Tabellenblatt-Zellen. Damit kann ich
aber nix anfangen; ich muss *in Basic* runden, nicht in /Calc/.

> Damit
> dies auf für Dezimalzahlen mit festen Nachkommastellen , wie bei
> Beträgen, funktioniert, muss zunächst die Zahl, die gerundet werden soll
> mit 100 multipliziert werden, dann ge"rundet, und dann wieder durch 100
> geteilt werden.

In Calc aka dem Tabellenblatt kann ich auch problemlos mit der Funktion
AUFRUNDEN aufrunden; das ist nicht das Problem. Das Problem ist, dass
ich das im *Makro* brauche, nicht in einer /Zelle/.

> Sollte die Funktion immer nur abrunden, muss vor der Multiplikation mit
> 100 noch 0,5 addiert werden.

Das hab ich schon probiert; vielleicht bist Du da ja anderer Ansicht,
aber *meiner* Meinung nach sind Formeln wie

| myTypA = (int(myTypB+0.5)/15) +
((int(myTypC+0.5)*20+0.5)/5)/(int(myTypD) + (int(myTypA+0.5)/30))

wirklich nicht mehr übersichtlich. Selbst das 'Original'

| myTypA = (Aufrunden(myTypB)/15 +
Aufrunden(myTypC*20)/5)/(Abrunden(myTypD) + Aufrunden(myTypA)/30)

ist schon hart an der Grenze (aber noch(!) verstehbar).

Wolfgang
-- 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org


Re: Aufrunden in Basic-Makro?

Posted by Mechtilde <oo...@mechtilde.de>.
Hallo Wolfgang,

mit der Funktion "Runden" wir auf die nächste ganze Zahl gerundet. Damit
dies auf für Dezimalzahlen mit festen Nachkommastellen , wie bei
Beträgen, funktioniert, muss zunächst die Zahl, die gerundet werden soll
mit 100 multipliziert werden, dann ge"rundet, und dann wieder durch 100
geteilt werden.

Sollte die Funktion immer nur abrunden, muss vor der Multiplikation mit
100 noch 0,5 addiert werden.

Gruß

Mechtilde

Am 25.05.2017 um 13:35 schrieb Wolfgang Jäth:
> Am 25.05.2017 um 10:56 schrieb Mechtilde:
>> Hallo,
>>
>> Schau mal in
>>
>> http://canzeley.de/download/forderungsberechnung/096/Forderungsberechnung367.ots
>>
>> Dort sind alle Beträge auf 2 Stellen hinter dem Komma gerundet.
>>
>> Im Makro stehen die entsprechenden Rechenformeln
> 
> Danke; aber soweit ich das erkennen kann, werden in den Makros lediglich
> *Calc-Formeln* [1] erstellt, die dann wohl in Tabellenblatt-Zellen
> eingefügt werden sollen. Direkte Rundungsoperationen *in Basic* kann ich
> aber leider nicht finden. Oder hab ich irgendwo was übersehen?
> 
> [1] z. B. so was:
> | sFormel = "=RUNDEN(L" & CStr(iLeereZeile-1) & "*H" & CStr(iLeereZeile)
> & "*Q" & CStr(iLeereZeile-1) & "/360*100)/100"
> 
> Wolfgang
> 

-- 
Mechtilde Stehmann
## Apache OpenOffice.org
## Freie Office Suite für Linux, MacOSX, Windows
## Debian Developer
## Loook, calender-exchange-provider, libreoffice-canzeley-client
## PGP encryption welcome
## Key-ID 0x141AAD7F


Re: Aufrunden in Basic-Makro?

Posted by Wolfgang Jäth <ja...@arcor.de>.
Am 25.05.2017 um 10:56 schrieb Mechtilde:
> Hallo,
> 
> Schau mal in
> 
> http://canzeley.de/download/forderungsberechnung/096/Forderungsberechnung367.ots
> 
> Dort sind alle Beträge auf 2 Stellen hinter dem Komma gerundet.
> 
> Im Makro stehen die entsprechenden Rechenformeln

Danke; aber soweit ich das erkennen kann, werden in den Makros lediglich
*Calc-Formeln* [1] erstellt, die dann wohl in Tabellenblatt-Zellen
eingefügt werden sollen. Direkte Rundungsoperationen *in Basic* kann ich
aber leider nicht finden. Oder hab ich irgendwo was übersehen?

[1] z. B. so was:
| sFormel = "=RUNDEN(L" & CStr(iLeereZeile-1) & "*H" & CStr(iLeereZeile)
& "*Q" & CStr(iLeereZeile-1) & "/360*100)/100"

Wolfgang
-- 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org


Re: Aufrunden in Basic-Makro?

Posted by Mechtilde <oo...@mechtilde.de>.
Hallo,

Schau mal in

http://canzeley.de/download/forderungsberechnung/096/Forderungsberechnung367.ots

Dort sind alle Beträge auf 2 Stellen hinter dem Komma gerundet.

Im Makro stehen die entsprechenden Rechenformeln

Gruß

Mechtilde

Am 25.05.2017 um 10:32 schrieb Wolfgang Jäth:
> Hi,
> 
> ich verzweifel gerade; ich müsste in einem Makro (also Basic) einen Wert
> *aufrunden*, finde aber dazu keine Funktion. Gibt es wirklich nur INT
> bzw. FIX (die aber lediglich *abrunden*), oder bin ich blind?
> 
> Gips evtl. irgend einen Workaround? Im Internet hab ich z. B. so was wie
> 
> | WorksheetFunction.Round(2.7, 2)
> 
> gefunden, aber da meckert mein (deutsches) OO eine nicht belegte
> Objektvariable an.
> 
> Wolfgang
> 

-- 
Mechtilde Stehmann
## Apache OpenOffice.org
## Freie Office Suite für Linux, MacOSX, Windows
## Debian Developer
## Loook, calender-exchange-provider, libreoffice-canzeley-client
## PGP encryption welcome
## Key-ID 0x141AAD7F


Re: Aufrunden in Basic-Makro?

Posted by Wolfgang Jäth <ja...@arcor.de>.
Am 25.05.2017 um 15:25 schrieb Bernd Obermayr:
>> Hi,
>> 
>> ich verzweifel gerade; ich müsste in einem Makro (also Basic) einen Wert
>> *aufrunden*, finde aber dazu keine Funktion. Gibt es wirklich nur INT
>> bzw. FIX (die aber lediglich *abrunden*), oder bin ich blind?
>> 
>> Gips evtl. irgend einen Workaround? Im Internet hab ich z. B. so was wie
>> 
>> | WorksheetFunction.Round(2.7, 2)
> 
> Da fehlt
> 
> Option VBAsupport 1
> 
> am Anfang des Moduls

Danke; das wars.

Wolfgang
-- 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org


Re: Aufrunden in Basic-Makro?

Posted by Bernd Obermayr <li...@bobermayr.de>.
Wolfgang Jäth schrieb am 25.05.2017 um 10:32:
> Hi,
> 
> ich verzweifel gerade; ich müsste in einem Makro (also Basic) einen Wert
> *aufrunden*, finde aber dazu keine Funktion. Gibt es wirklich nur INT
> bzw. FIX (die aber lediglich *abrunden*), oder bin ich blind?
> 
> Gips evtl. irgend einen Workaround? Im Internet hab ich z. B. so was wie
> 
> | WorksheetFunction.Round(2.7, 2)

Da fehlt

Option VBAsupport 1

am Anfang des Moduls

public Function myround(optional zahl)
	if IsMissing (zahl) then
		zahl=123.34567
	end if
	myround=WorksheetFunction.Round(zahl, 2)
End Function

so gehts auch ohne:

public Function myround(optional zahl)
	if IsMissing (zahl) then
		zahl=123.34567
	end if
	myround=round(zahl,2)
End Function


> 
> gefunden, aber da meckert mein (deutsches) OO eine nicht belegte
> Objektvariable an.
> 
> Wolfgang
> 


-- 
Gruss
  Bernd


---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org


Re: Aufrunden in Basic-Makro?

Posted by Bernd Obermayr <li...@bobermayr.de>.
Jörg Schmidt schrieb am 26.05.2017 um 09:57:
>  
> 
>> -----Original Message-----
>> From: Bernd Obermayr [mailto:lists@bobermayr.de] 
>> Sent: Thursday, May 25, 2017 2:58 PM
>> To: users-de@openoffice.apache.org
>> Subject: Re: Aufrunden in Basic-Makro?
>>
>> Bernd Obermayr schrieb am 25.05.2017 um 14:14:
>>> Wolfgang Jäth schrieb am 25.05.2017 um 10:32:
>>>> Hi,
>>>>
>>>> ich verzweifel gerade; ich müsste in einem Makro (also 
>> Basic) einen Wert
>>>> *aufrunden*, finde aber dazu keine Funktion. Gibt es 
>> wirklich nur INT
>>>> bzw. FIX (die aber lediglich *abrunden*), oder bin ich blind?
>>>>
>>>> Gips evtl. irgend einen Workaround? Im Internet hab ich z. 
>> B. so was wie
>>>>
>>>> | WorksheetFunction.Round(2.7, 2)
>>>>
>>>> gefunden, aber da meckert mein (deutsches) OO eine nicht belegte
>>>> Objektvariable an.
>>>>
>>>> Wolfgang
>>>>
>>> Hi,
>>> wie wärs damit:
>>>
>> <https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_
>> ROUND_function>
>>>
>> Sorry, das war Quatsch :)
> 
> Strenggenommen nicht, denn alle Calc-Tabellenfunktionen sind auch in StarBasic-Makros nutzbar, z.B. siehe:
> http://www.dannenhoefer.de/faqstarbasic/WiekannmanFunktionenvonCalcverwenden.html
> 

Ja stimmt :) Hab ich auch irgendwo schon verwendet.

Wobei die site von Dannenhöfer schon lange nicht mehr gepflegt wird.

> 
> Ob das beim Runden sinnvoll ist, mag jeder selbst entscheiden, es gibt aber diverse Fälle wo es sinnvoll IST, weil es Aufwand spart, da man sich die Funktion fertiger Tabellenfunktionen nicht in StarBasic nachprogrammieren muss.

genau.

> 
> 
> Gruß
> Jörg

-- 
Gruss
  Bernd


---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org


Re: Aufrunden in Basic-Makro?

Posted by Jörg Schmidt <jo...@j-m-schmidt.de>.
 

> -----Original Message-----
> From: Bernd Obermayr [mailto:lists@bobermayr.de] 
> Sent: Thursday, May 25, 2017 2:58 PM
> To: users-de@openoffice.apache.org
> Subject: Re: Aufrunden in Basic-Makro?
> 
> Bernd Obermayr schrieb am 25.05.2017 um 14:14:
> > Wolfgang Jäth schrieb am 25.05.2017 um 10:32:
> >> Hi,
> >>
> >> ich verzweifel gerade; ich müsste in einem Makro (also 
> Basic) einen Wert
> >> *aufrunden*, finde aber dazu keine Funktion. Gibt es 
> wirklich nur INT
> >> bzw. FIX (die aber lediglich *abrunden*), oder bin ich blind?
> >>
> >> Gips evtl. irgend einen Workaround? Im Internet hab ich z. 
> B. so was wie
> >>
> >> | WorksheetFunction.Round(2.7, 2)
> >>
> >> gefunden, aber da meckert mein (deutsches) OO eine nicht belegte
> >> Objektvariable an.
> >>
> >> Wolfgang
> >>
> > Hi,
> > wie wärs damit:
> > 
> <https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_
> ROUND_function>
> > 
> Sorry, das war Quatsch :)

Strenggenommen nicht, denn alle Calc-Tabellenfunktionen sind auch in StarBasic-Makros nutzbar, z.B. siehe:
http://www.dannenhoefer.de/faqstarbasic/WiekannmanFunktionenvonCalcverwenden.html


Ob das beim Runden sinnvoll ist, mag jeder selbst entscheiden, es gibt aber diverse Fälle wo es sinnvoll IST, weil es Aufwand spart, da man sich die Funktion fertiger Tabellenfunktionen nicht in StarBasic nachprogrammieren muss.


Gruß
Jörg


---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org


Re: Aufrunden in Basic-Makro?

Posted by Bernd Obermayr <li...@bobermayr.de>.
Bernd Obermayr schrieb am 25.05.2017 um 14:14:
> Wolfgang Jäth schrieb am 25.05.2017 um 10:32:
>> Hi,
>>
>> ich verzweifel gerade; ich müsste in einem Makro (also Basic) einen Wert
>> *aufrunden*, finde aber dazu keine Funktion. Gibt es wirklich nur INT
>> bzw. FIX (die aber lediglich *abrunden*), oder bin ich blind?
>>
>> Gips evtl. irgend einen Workaround? Im Internet hab ich z. B. so was wie
>>
>> | WorksheetFunction.Round(2.7, 2)
>>
>> gefunden, aber da meckert mein (deutsches) OO eine nicht belegte
>> Objektvariable an.
>>
>> Wolfgang
>>
> Hi,
> wie wärs damit:
> <https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_ROUND_function>
> 
Sorry, das war Quatsch :)
in ooo Basic gibt tatsächlich kein round
Hier gibts die Lösung
<https://forum.openoffice.org/en/forum/viewtopic.php?f=9&t=65419>

-- 
Gruss
  Bernd


---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org


Re: Aufrunden in Basic-Makro?

Posted by Bernd Obermayr <li...@bobermayr.de>.
Wolfgang Jäth schrieb am 25.05.2017 um 10:32:
> Hi,
> 
> ich verzweifel gerade; ich müsste in einem Makro (also Basic) einen Wert
> *aufrunden*, finde aber dazu keine Funktion. Gibt es wirklich nur INT
> bzw. FIX (die aber lediglich *abrunden*), oder bin ich blind?
> 
> Gips evtl. irgend einen Workaround? Im Internet hab ich z. B. so was wie
> 
> | WorksheetFunction.Round(2.7, 2)
> 
> gefunden, aber da meckert mein (deutsches) OO eine nicht belegte
> Objektvariable an.
> 
> Wolfgang
> 
Hi,
wie wärs damit:
<https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_ROUND_function>

-- 
Gruss
  Bernd


---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org