Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Zielwertsuche "Makro"
#1
Hallo Zusammen,

also ich möchte in meiner Excel via Makro gerne über die ganze Tabelle eine Zielsuche laufen lassen.

Die aktuelle Formel ist folgende:

Range("BI243").GoalSeek Goal:=Range("BM243"), ChangingCell:=Range("AT243")

Aktuell wird allerdings nur die eine Zeile abgeglichen - ich möchte aber, dass das ganze über jede einzelne ausgefüllte Zeile drüber läuft...Quasi:

Range("BI243").GoalSeek Goal:=Range("BM243"), ChangingCell:=Range("AT243")
Range("BI244").GoalSeek Goal:=Range("BM244"), ChangingCell:=Range("AT244")
Range("BI245").GoalSeek Goal:=Range("BM245"), ChangingCell:=Range("AT245")
.
.
.


kann mir da jemand helfen ?

Danke.
Antworten Top
#2
Ok ich habe das nun aktuell wie folgt gelöst:

Public Sub Zielwert()
'----------------------Versuch 2--------------------------------'

Const iMaxIterations = 800 'Anzahl der zu durchlaufenden Iterationen
Const strStartRng = "BI8" 'erster Zellbezug, ab welcher gearbeitet wird
Const strGoalRng = "BM8" 'erster Zellbezug des Goal-Wertes
Const strChngRng = "AT8" ' erster Zellbezug des ChangingCell-Wertes


'VARIABLES
'------------------------------------------------------'
Dim i As Integer
Dim rStartCell As Range
Dim rGoalCell As Range
Dim rChngCell As Range


'DEFINIERE RANGES
'------------------------------------------------------'
Set rStartCell = Range(strStartRng)
Set rGoalCell = Range(strGoalRng)
Set rChngCell = Range(strChngRng)


'SCHLEIFE
'------------------------------------------------------'
For i = 1 To iMaxIterations
        'teste auf Abbruchbedingung VOR Ausführung des Codes
        If rStartCell.Offset(i - 1, 0).Value = "" Then Exit For
        'Starte GoalSeeker
        rStartCell.Offset(i - 1, 0).GoalSeek Goal:=rGoalCell.Offset(i - 1, 0), ChangingCell:=rChngCell.Offset(i - 1, 0)
Next i
End Sub



Funktioniert alles...glaube ich. Allerdings habe ich folgendes Problem - manchmal ist eine oder zwei Zeilen leer. Ich würde gerne in der Schleife etwas drinne haben, dass er erst aufhört wenn er 10 Zeilen hintereinander nichts zu greifen hatte...

Danke für eure HILFE
Antworten Top
#3
Hallöchen,

baue Dir in der Schleife einen Zähler ein, der unter einer Bedingung hochgesetzt wird Wenn die maximale Zahl erreicht ist, verässt Du die Schleife oder das Makro. Im Prinzip hast Du so was ansatzweise schon in der Schleife drin.

If rStartCell.Offset(i - 1, 0).Value = "" Then Exit For

Das könnte dann so aussehen:

If rStartCell.Offset(i - 1, 0).Value = "" Then iCnt = iCnt + 1: If iCnt > 10 then Exit For

Ob rStartCell.Offset(i - 1, 0) nun der richtige Punkt zum Prüfen ist, sei mal dahingestellt.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#4
Stimmt....das sollte den Fehler beheben. Allerdings hab ich dann einen Debugg in der Zeile darauf...vermutlich wegen dem Thema was du schon angesprochen hattest.

"Ob rStartCell.Offset(i - 1, 0) nun der richtige Punkt zum Prüfen ist, sei mal dahingestellt."

Allerding finde / sehe ich gerade den Fehler nicht...muss ich nochmal in ruhe drüber schauen.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste