Seite 1 von 1
Zielwertsuche automatisieren [Gelöst!]
Verfasst: Di, 18.05.2004 14:22
von daswaldhorn
Hallo alle zusammen,
ich hab in OOo Calc ne tolle Tabelle angelegt und muss nun da in jeder Zeile eine Zielwertsuche machen. Das is ja ziemlich aufwendig, kann man das irgendwie automatisieren mit nem Makro? Ich hab mal einen Durchgang als Makro aufgezeichnet, aber da schau ich nich so recht durch, ich kenn mich mit der Makroprogrammierung halt noch nich aus.
Danke, Carsten
P.S. Hab schon das Forum hier durchsucht, aber nichts passendes gefunden, wenn das Thema schon mal da war, dann bitte einfach den Link posten.
Verfasst: Fr, 13.05.2005 20:59
von daswaldhorn
Hi,
also das Thema ist wieder aktuell geworden, mittlerweile hab ich die Beta, aber auch da hab ich noch nix neues in diese Richtung entdeckt.
Bin für jeden Tip dankbar.
====EDIT====
Mir ist heute eingefallen, das ein Komilitone von mir das bei Excel mit einem Makro gelöst hatte: Makroaufzeichnung starten - eine Zielwertsuche durchführen - Makroaufzeichnung beenden und speichern. Dann hat er das Makro bearbeitet und eine FOR-Schleife eingebaut und bei den entsprechenden Zellennamen die Laufvariable der Schleife reingeschrieben. Mein Problem ist nun, das in dem aufgezeichneten Makro die Zellen nicht auftauchen, die ich bei dem einen Durchlauf angegeben hatte. Somit hab ich auch nix da, wo ich eine Schleife drum bauen könnte.
Hier mein Makro:
Code: Alles auswählen
REM ***** BASIC *****
Sub Main
End Sub
sub zielwert
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:GoalSeekDialog", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:GoalSeek", "", , Array())
end sub
Also die Zielwertsuche hat das Makro wohl registriert, jedenfalls steht da ein GoalSeek. Da ich aber die Syntax dieses Befehls nicht kenne, weiß ich nicht, wo ich jetzt die drei Parameter hinschreiben soll, die ich ja im Dialogfenster der Zielwertsuche angeben muss.
Vielen Dank für eure Hilfe,
Carsten
Neue Erkenntnisse
Verfasst: Mi, 25.05.2005 14:40
von daswaldhorn
Hallo zusammen,
also ich hab mir das jetzt nochmal in Excel angesehen und mir ein Makro gebastelt, was so aussieht:
Code: Alles auswählen
Sub Zielwert()
Dim zeile As Integer
For zeile = 1 To 10
Cells(zeile, 3).GoalSeek Goal:=Cells(zeile, 1), ChangingCell:=Cells(zeile, 2)
Next zeile
End Sub
Das Problem ist jetzt, dieses Makro in OOo zu bringen. Wer hat da eine Idee?
Grüße, Carsten
Geschafft!!
Verfasst: Mi, 25.05.2005 19:30
von daswaldhorn
So, nach einer laaangen Suche, bei der ich auf das
OOoForum.org gestoßen bin, hab ich es endlich geschafft! *freu*

Hier ist nun mein Ergebnis:
Code: Alles auswählen
sub Zielwertsuche
dim Ergebnis as new com.sun.star.sheet.GoalResult
dim FormelAdresse as new com.sun.star.table.CellAddress
dim VariablenAdresse as new com.sun.star.table.CellAddress
dim Zielwert as integer
dim zeile as integer
oDoc = ThisComponent
oSheet = ThisComponent.Sheets(0)
FormelAdresse.Column = 1 'Spalte B
VariablenAdresse.Column = 0 'Spalte A
Zielwert = 5
for zeile = 0 to 9 'Zeile 1...10
VariablenAdresse.Row = zeile
FormelAdresse.Row = zeile
Ergebnis = oDoc.seekgoal(FormelAdresse,VariablenAdresse,Zielwert)
'msgbox Ergebnis.result 'Ausgabe als Messagebox
oSheet.getCellByPosition(VariablenAdresse.Column,zeile).value = Ergebnis.result
next
end sub
Die Frage ist nun, warum ist der Code soviel länger als das Excel-Teil? Das muss doch kürzer gehn
Grüße, Carsten
P.S: Vielen Dank an allen, die mir so hilfreich zur Seite standen
