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.
Zielwertsuche automatisieren [Gelöst!]
Moderator: Moderatoren
- daswaldhorn
- ****
- Beiträge: 196
- Registriert: Mo, 17.05.2004 22:29
- Wohnort: Voerde
- Kontaktdaten:
Zielwertsuche automatisieren [Gelöst!]
Zuletzt geändert von daswaldhorn am Mi, 25.05.2005 19:31, insgesamt 1-mal geändert.
- daswaldhorn
- ****
- Beiträge: 196
- Registriert: Mo, 17.05.2004 22:29
- Wohnort: Voerde
- Kontaktdaten:
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:
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
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
Vielen Dank für eure Hilfe,
Carsten
- daswaldhorn
- ****
- Beiträge: 196
- Registriert: Mo, 17.05.2004 22:29
- Wohnort: Voerde
- Kontaktdaten:
Neue Erkenntnisse
Hallo zusammen,
also ich hab mir das jetzt nochmal in Excel angesehen und mir ein Makro gebastelt, was so aussieht:Das Problem ist jetzt, dieses Makro in OOo zu bringen. Wer hat da eine Idee?
Grüße, Carsten
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
Grüße, Carsten
- daswaldhorn
- ****
- Beiträge: 196
- Registriert: Mo, 17.05.2004 22:29
- Wohnort: Voerde
- Kontaktdaten:
Geschafft!!
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: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

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

Grüße, Carsten
P.S: Vielen Dank an allen, die mir so hilfreich zur Seite standen
