Microsoft Excel

Herbers Excel/VBA-Archiv

Makro - Zielwertsuche

Betrifft: Makro - Zielwertsuche von: WalterK
Geschrieben am: 26.09.2004 17:14:45

Hallo zusammen!

Im Forum habe ich folgendes Makro erhalten:

Private Sub worksheet_change(ByVal target As Excel.Range)
If target.Address = "$W$63" Then
Range("CM63").GoalSeek Goal:=Range("AA63").Value, ChangingCell:=Range("BS63")
Range("CM63").GoalSeek Goal:=Range("AA63").Value, ChangingCell:=Range("BS63")
End If
If target.Address = "$W$64" Then
Range("CM64").GoalSeek Goal:=Range("AA64").Value, ChangingCell:=Range("BS64")
Range("CM64").GoalSeek Goal:=Range("AA64").Value, ChangingCell:=Range("BS64")
End If
If target.Address = "$W$65" Then
Range("CM65").GoalSeek Goal:=Range("AA65").Value, ChangingCell:=Range("BS65")
Range("CM65").GoalSeek Goal:=Range("AA65").Value, ChangingCell:=Range("BS65")
End If

Das Makro wird gestartet, wenn ich z.b. die Zelle W63 oder W64 usw. verlasse.

Ist es möglich, das Makro dann starten zu lassen, wenn über eine Formelberechnung z.B. in Zelle Z63 oder Z64 usw. "Differenz" ausgegeben wird, und nicht mehr über das Verlassen einer Zelle.

Besten Dank im voraus.
Servus, Walter

  


Betrifft: AW: Makro - Zielwertsuche von: Ulf
Geschrieben am: 26.09.2004 17:17:50

Verleg das Ganze in das Ereignis Private Sub Worksheet_Calculate()

Ulf


  


Betrifft: AW: Makro - Zielwertsuche von: WalterK
Geschrieben am: 26.09.2004 17:28:46

Hallo!

Wie muss das Makro geändert werden, damit z.B. die Zelle Z63 abgefragt wird, ob dort "Differenz" drinnen steht, denn dann müsste das Makro starten.

Servus, Walter


  


Betrifft: AW: Makro - Zielwertsuche von: Ulf
Geschrieben am: 26.09.2004 17:41:59

if [Z63] = "Differenz" then

'weiterer Code.....

end if

Ulf


  


Betrifft: AW: Makro - Zielwertsuche von: WalterK
Geschrieben am: 26.09.2004 18:10:04

Hallo
Mein Makro fängt jetzt so an:

Private Sub worksheet_Calculate()
If [AH63] = "Differenz" Then
Range("CM63").GoalSeek Goal:=Range("AA63").Value, ChangingCell:=Range("BS63")
Range("CM63").GoalSeek Goal:=Range("AA63").Value, ChangingCell:=Range("BS63")
End If
usw.
End Sub


Was mache ich falsch, jedenfalls wird nichts berechnet und bei meinem Level in VBA keine Idee, was falsch sein könnte!

Danke vorerst, Walter


  


Betrifft: AW: Makro - Zielwertsuche von: Ulf
Geschrieben am: 26.09.2004 18:16:10

Das wort Differenz muss als Ergebnis einer Berechnung erscheinen. Ich dich
so verstanden. Falls es durch Eingabe erscheint, ist das Ereignis
Private Sub Worksheet_Change(ByVal Target As Range)
das richtige.

Ulf


  


Betrifft: AW: Makro - Zielwertsuche von: WalterK
Geschrieben am: 26.09.2004 18:35:15

Hallo Ulf

Es ist schon richtig, das Wort Differenz wird über eine Formelberechnung ausgegeben.
Es wird mir aber ein Laufzeitfehler angegeben, und zwar wird die Zeile "Range("CM63 usw." gelb markiert.

Danke, Walter


  


Betrifft: AW: Makro - Zielwertsuche von: Ulf
Geschrieben am: 26.09.2004 18:45:18

Versuchs mal so:

Option Explicit
Private Sub worksheet_Calculate()
On Error GoTo ErrH
Application.EnableEvents = False
If [AH63] = "Differenz" Then
Range("CM63").GoalSeek Goal:=Range("AA63").Value, ChangingCell:=Range("BS63")
Range("CM63").GoalSeek Goal:=Range("AA63").Value, ChangingCell:=Range("BS63")
'usw.
End If
ErrH:
Application.EnableEvents = True
End Sub


Ulf


  


Betrifft: AW: Makro - Zielwertsuche von: WalterK
Geschrieben am: 26.09.2004 19:03:40

Hallo

Funktioniert leider nicht, es erfolgt kein Makrostart.
Trotzdem danke für die Mühe. Mir bleibt ja immer noch die 1. Variante (Makrostart beim Verlassen einer Zelle).

Servus, Walter


  


Betrifft: AW: Makro - Zielwertsuche von: Ulf
Geschrieben am: 26.09.2004 19:19:08

Versteh doch, es passiert nur, wenn eine Neuberechnung der Tabelle erfolgt.
Ggf. mit F9 neuberechnen.

Ulf


 

Beiträge aus den Excel-Beispielen zum Thema "Makro - Zielwertsuche"