• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

goal seek macro

Status
Niet open voor verdere reacties.

nobody11

Gebruiker
Lid geworden
20 dec 2007
Berichten
552
hey, ik wil graag in VB een "goal seek" functie schrijven, en ikh eb het volgende reeds

Code:
Sub Macro1()
'
 Dim doel As Integer
 Range("B2") = doel
        Range("A1").GoalSeek goal:=doel, ChangingCell:=Range("B1")
End Sub

het is een basisoef, om te zien of ik het kan programmeren, in cel A1 staat de functie 5*B1

nu, bovenvermelde code werkt momenteel niet, als ik "doel" verander door een cijfer, dan lukt het perfect..

is hier een reden voor? Ik zou graag de doelfunctie laten afhangen van een verwijzing aangezien dit in excel niet gaat.. is dat misschien de reden? dat de doelwaarde een specifiek getal moetzijn ipv een verwijzing nr een cel?
 
Laatst bewerkt door een moderator:
Net vóór dat VBA de regel

Code:
Range("B2") = doel

gaat uitvoeren, heeft doel een waarde van 0. En daarmee zal jou doelzoeken misschien niet lukken? Verder kan ik dat ook niet nagaan met de weinige gegevens die je geeft.

Wigi
 
Net vóór dat VBA de regel

Code:
Range("B2") = doel

gaat uitvoeren, heeft doel een waarde van 0. En daarmee zal jou doelzoeken misschien niet lukken? Verder kan ik dat ook niet nagaan met de weinige gegevens die je geeft.

Wigi


meer gegevens dienen toch nie te worden gegeven? in cel A1 staat de formule 5*B1..

ik wil dus dat de cel A1 de waarde aanneemt die in cel b2 staat gegeven (door de gebruiker in te geven), en dat nadien de goal seeker de oplossing geeft.. ik ka het ook via goal seeker, maar dat laat niet toe dat de doelwaarde een celverwijzing is.. hier wil ik dat de doelwaarde in cel B2 staat en vrij aangepast kan worden.. daarom wil ik het via VB doen..
 
edit

dacht dat het werkte, maar toch niet :-)

heb nu volgende code:

Code:
Sub Macro1()
'
 Dim doel As Integer
 doel = 1
 Range("B2") = doel
        Range("A1").GoalSeek goal:=doel, ChangingCell:=Range("B1")
End Sub

in cel A1 staat =5*B1
als ik nu in cel B2 bijvoorbeeld 20 zet, dan zou de goal seeker normaal "4" als antwoord moeten geven.. hij geeft echter 1 in als waarde (doordat ik die i h begin op 1 heb gezet.. hoe kan ik dit oplossen?)
 
Laatst bewerkt door een moderator:
@nobody11 ik heb je hierboven op iets gewezen ik zou het maar even doornemen als ik jou was.
 
edit

dacht dat het werkte, maar toch niet :-)

heb nu volgende code:

Code:
Sub Macro1()
'
 Dim doel As Integer
 doel = 1
 Range("B2") = doel
        Range("A1").GoalSeek goal:=doel, ChangingCell:=Range("B1")
End Sub

in cel A1 staat =5*B1
als ik nu in cel B2 bijvoorbeeld 20 zet, dan zou de goal seeker normaal "4" als antwoord moeten geven.. hij geeft echter 1 in als waarde (doordat ik die i h begin op 1 heb gezet.. hoe kan ik dit oplossen?)

nota bene, als ik ipv met die dim "doel" werk, gewoon een cijfer ingeef als goal, dan lutk het wel.. ik vrees dus dat het probleem is dat met goal seek de goal zelf een getal moet izjn,en geen verwijzing naar een cel waar een cijfer kan in staan.. iemand die dit kan bevestigen?
 
ik heb eens gezocht op internet, en kom op deze site



http://www.vbaexpress.com/kb/getarticle.php?kb_id=433

hieruit blijkt dat de goal cel zelf ook een verwijzing kan zijn,en niet alleen een waarde.. ik ben echter nog niet zo goed in VB om dit om te zetten naar een goal seek functie met maar 1 doelcel.. iemand van jullie die dit kan?

alvast bedankt!!
 
ik heb eens gezocht op internet, en kom op deze site



http://www.vbaexpress.com/kb/getarticle.php?kb_id=433

hieruit blijkt dat de goal cel zelf ook een verwijzing kan zijn,en niet alleen een waarde.. ik ben echter nog niet zo goed in VB om dit om te zetten naar een goal seek functie met maar 1 doelcel.. iemand van jullie die dit kan?

alvast bedankt!!

met deze code lukt het

Option Explicit
Sub Multi_Goal_Seek()
Dim TargetVal As Range, DesiredVal As Range, ChangeVal As Range, CVcheck As Range
Dim CheckLen As Long, i As Long

restart:
With Application
Set TargetVal = Range("A3")
Set DesiredVal = Range("A1")
Set ChangeVal = Range("B1")
End With

' Loop through the goalseek method
For i = 1 To TargetVal.Columns.Count
TargetVal.Cells(i).GoalSeek Goal:=DesiredVal.Cells(i).Value, ChangingCell:=ChangeVal.Cells(i)
Next i
End Sub

A3 bevat de doelcel
A1 de doelwaarde
en B1 bevat de te veranderen cel..
 
Laatst bewerkt:
@nobody11 ik heb je een paar keer verteld hoe je code dient te plaatsen. Deze gaat nu dicht. Je kan mij uitleggen via mail waarom je mijn aanwijzingen niet opvolgt. Hierna wil ik overwegen deze topic weer te openen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan