BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das OpenOffice Forum zu erhalten!

DANKE >><< DANKE

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des OpenOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als OO-SUPPORTER gekennzeichnet. 🤗

Rechnen via Makro

Alles zur Programmierung im OpenOffice.org
Antworten
Andrej
Beiträge: 5
Registriert: Di 25. Dez 2018, 18:08

Rechnen via Makro

Beitrag von Andrej » Di 25. Dez 2018, 18:31

Hallo zusammen,

Meine Makro-Praxis ist schon sehr lange her. Kann mir bitte jemand den Quellcode für folgendes Beispiel mitteilen (Den Rest dürfte ich selber schaffen, aber der Anfang fällt mir sehr schwer, welche Klassen/Objekte/Variablen wie deklarieren/definieren, Zeilen ansprechen etc...)?

Ich möchte mit dem drücken des Buttons die Zahlen aus der Spalte B in Spalte D addieren.
Makro.jpg
Makro.jpg (8.11 KiB) 6397 mal betrachtet
Nach zweimaligen Betätigen des Buttons würde das obere Ergebnis herauskommen. Nach drei mal:
3
6
9
usw...

Vielen, vielen lieben Dank vorab!!!

Andrej

craig
Beiträge: 318
Registriert: Sa 14. Mai 2016, 12:36

Re: Rechnen via Makro

Beitrag von craig » Di 25. Dez 2018, 21:47

Hallo Andrej,

Code: Alles auswählen

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

Sub Berechnen
Dim oDoc as Object
Dim oSheet as Object
Dim mArr1 as Variant
Dim i as Long

	' Referenz: aktuelles Dokument
	oDoc=ThisComponent
	
	' Referenz: Tabellenblatt 1
	oSheet=oDoc.Sheets().getByIndex(0)
	' ODER
	' oSheet=oDoc.Sheets().getByName("Tabelle1")


		'Zeilen- und Spaltenzählung beginnt immer bei 0. So ist 0,0 = Zelle A1
		'[in] long nLeft, [in] long nTop, [in] long nRight, [in] long nBottom )
		' Array mit Daten des Zellbereichs füllen
		mArr1()=oSheet.getCellRangeByPosition(1,1,3,3).getDataArray()

		For i = 0 to 2
			' Berechneten Wert in Spalte D schreiben
			' [in] long nColumn, [in] long nRow )
			oSheet.getCellByPosition(3,i+1).Value= mArr1(i)(2)+mArr1(i)(0)
		next i

End Sub
Gruß

Craig

Nie die Sicherungskopie vergessen!

═══════════════════════════════════════
WIN 10 Pro 64-Bit • AOO 4.1.8 • LO 7.4.5.1 (x64)

Andrej
Beiträge: 5
Registriert: Di 25. Dez 2018, 18:08

Re: Rechnen via Makro

Beitrag von Andrej » Mi 26. Dez 2018, 14:44

Als erstes vielen Dank für die schnelle Antwort!

Habe noch eine weiter Frage im Rahmen meines „Projekts“:
Ich lasse Zufallswerte in mehreren Zellen berechnen (via „Shift+Strg+F9“) bis deren Summe („B2“) eine max. Abweichung von 5% vom Basiswert ergibt.
zufallszahl.jpg
zufallszahl.jpg (10.77 KiB) 6374 mal betrachtet
Ich habe ein Makro aufgezeichnet und versucht eine Schleife um diese Aufzeichnung herumzubasteln, komme allerdings nicht weiter...

sub Zufall

dim document as object
dim dispatcher as object
Dim oDoc as Object
Dim oSheet as Object

document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

oDoc=ThisComponent
oSheet=oDoc.Sheets().getByIndex(0)

oCellA2 = oSheet.getCellrangeByName("A2")
oCellB2 = oSheet.getCellrangeByName("B2")

dispatcher.executeDispatch(document, ".uno:CalculateHard", "", 0, Array())

While ((oCellA2.value / oCellB2.value)< (0,95 * oCellA2.value) OR (oCellA2 / oCellB2.value)> (1,05 * oCellA2.value))
dispatcher.executeDispatch(document, ".uno:CalculateHard", "", 0, Array())
Wend

end sub

Kann mir da bitte jemand helfen?

Vielen Dank!!!

craig
Beiträge: 318
Registriert: Sa 14. Mai 2016, 12:36

Re: Rechnen via Makro

Beitrag von craig » Mi 26. Dez 2018, 15:11

Hallo Andrej,

Dein Bild zeigt nur den Zellbereich A1:B2, gleichzeitig spricht Du von:
Andrej hat geschrieben:Ich lasse Zufallswerte in mehreren Zellen berechnen (via „Shift+Strg+F9“)...
Lade mal ein Beispieldokument hoch, damit ich damit arbeiten kann.
Gruß

Craig

Nie die Sicherungskopie vergessen!

═══════════════════════════════════════
WIN 10 Pro 64-Bit • AOO 4.1.8 • LO 7.4.5.1 (x64)

Andrej
Beiträge: 5
Registriert: Di 25. Dez 2018, 18:08

Re: Rechnen via Makro

Beitrag von Andrej » Mi 26. Dez 2018, 15:33

in diesem Fall sollten die Zufallszahlen so oft neu berechnet werden, bis deren Summe (B9) max 5% vom Basiswert (B1) abweicht...

Danke!!!
Dateianhänge
Zafallszahl.ods
(11.64 KiB) 248-mal heruntergeladen

craig
Beiträge: 318
Registriert: Sa 14. Mai 2016, 12:36

Re: Rechnen via Makro

Beitrag von craig » Mi 26. Dez 2018, 15:43

Hallo Andrej,

ggf. so?
Zufallszahl.ods
(13.2 KiB) 264-mal heruntergeladen
Gruß

Craig

Nie die Sicherungskopie vergessen!

═══════════════════════════════════════
WIN 10 Pro 64-Bit • AOO 4.1.8 • LO 7.4.5.1 (x64)

Andrej
Beiträge: 5
Registriert: Di 25. Dez 2018, 18:08

Re: Rechnen via Makro

Beitrag von Andrej » Mi 26. Dez 2018, 16:42

Vielen Dank, so geht leider nicht. Für mein Projekt ist es notwendig, dass die einzelnen Zufallszahlen eine größere Varianz haben. Es sind auch insgesamt mehr als zehn Zufallszahlen und enthalten auch noch andere Funktionen und Verweise.

Es wäre mir nur geholfen, wenn mit der Betätigung der Schaltfläche die Berechnung der Zufallszahlen (mit „Shift+Strg+F9“) in einer Schleife solange durchgeführt wird bis die Summe mit der gewünschten Varianz erreicht wird.

F3K Total
Beiträge: 1007
Registriert: Mo 1. Aug 2011, 00:03

Re: Rechnen via Makro

Beitrag von F3K Total » Mi 26. Dez 2018, 18:03

Moin,
versuche es mit folgendem Makro:

Code: Alles auswählen

Sub GET_RAND_SUM
    oSheet = ThisComponent.Sheets.getbyname("Tabelle1")
    dBasisWert = oSheet.getcellbyposition(1,0).Value 'Zelle B1
    oSummenCell = oSheet.getcellbyposition(1,8)'Zelle B9
    do
        ThisComponent.calculateAll
        dSummenwert = oSummenCell.Value
        'print dSummenwert
    loop until dSummenwert >= 0.95 * dBasisWert AND  dSummenwert <= 1.05 * dBasisWert
    'print "Fertig: " & dSummenwert
End Sub
Gruß R
EDIT:Wenn du ohne Makro so lange klicken willst bis die Zahl passt, kannst du auch folgende Einstellung an der Schaltfäche vornehmen:
CH.PNG
CH.PNG (22.45 KiB) 6359 mal betrachtet
Windows 10: AOO, LO Linux Mint: AOO, LO

Andrej
Beiträge: 5
Registriert: Di 25. Dez 2018, 18:08

Re: Rechnen via Makro

Beitrag von Andrej » Mi 26. Dez 2018, 22:47

Vielen Dank - funzt!

Ich bin nun vorerst glücklich. Werde meine Tools die Tage in Betrieb nehmen, und mich dann ggf. noch mal melden.

Antworten