Avatar billede Chenowen Nybegynder
05. april 2013 - 15:27 Der er 8 kommentarer og
1 løsning

VBA til simulering af optimeringsproblem

Hej Eksperter,

Jeg skal lave en simulering af et optimeringsproblem, men den VBA jeg har lavet er ikke helt korrekt, men jeg ved ikke hvor fejlen ligger. VBA'en ser sådan ud:

Sub Macro1()
Worksheets("Simulering").Activate
SolverReset
SolverOptions Precision:=0.001
    SolverOK SetCell:="$L$12", MaxMinVal:=1, ValueOf:="0", ByChange:="$C$11:$K$11"
    SolverAdd CellRef:="$L$15:$L$17", Relation:=3, FormulaText:="$N$15:$N$17"
    SolverAdd CellRef:="$L$19:$L$21", Relation:=3, FormulaText:="$N$19:$N$21"
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1
End Sub

Når jeg kører VBA'en kommer den med fejlen "Compile error: Sub or Function not defined", også refererer den til "SolverReset"!

Hvis der er nogle der er klar på at kigge på problemet, kan jeg også sende selve excel-arket, så man kan se selve opstilling. Håber der er nogle der kan hjælpe..

- Jeppe
Avatar billede supertekst Ekspert
05. april 2013 - 23:26 #1
Er tilføjelsesprogrammet installeret?
Avatar billede Chenowen Nybegynder
06. april 2013 - 00:14 #2
Det var lige præcis det det ikke var, så det har jeg installeret nu.. Men så dykker der et nyt problem op.. Jeg har eksempelvis en begrænsning i mit optimeringsproblem hvor N17 >= L17, men når jeg har simuleret én gang, er det som N17 har simuleret to gange! Dette kan i nogle tilfælde betyde, at selvom N17 >= L17, så står L17 >= N17, fordi N17 har simuleret én gang ekstra! Ved ikke om det giver mening?
Avatar billede Chenowen Nybegynder
07. april 2013 - 17:16 #3
Jeg ønsker at køre en simulering på den optimale løsning som er i L12, men jeg har problemer med at få VBA'en til at fungere!

Sub LoopMacro3()
    Dim i As Integer

    For i = 1 To 10
    Macro1
    Sheet.Cells(i + 9, 18) = Range("L12")
    Next i

End Sub

Jeg ønsker at køre 10 simuleringer i dette tilfælde, og værdien af den optimale løsning skal komme i cellerne (i + 9, 18), men den kommer med en runtime error 424 Object required! Hvad kan fejlen være? Håber der er nogle der kan hjælpe..
Avatar billede supertekst Ekspert
07. april 2013 - 17:39 #4
Er det denne linje?
Sheet.Cells(i + 9, 18) = Range("L12")
Avatar billede Chenowen Nybegynder
07. april 2013 - 17:42 #5
Ja det er nemlig den celle den refererer til! Hvad kunne fejlen være?
Avatar billede supertekst Ekspert
07. april 2013 - 17:45 #6
Ret til:
    ActiveSheet.Cells(i + 9, 18) = Range("L12")
Avatar billede Chenowen Nybegynder
08. april 2013 - 12:01 #7
Det var lige præcis det der skulle til :-) Tak for hjælpen..
Avatar billede Chenowen Nybegynder
08. april 2013 - 12:02 #8
Smider du lige et svar, så du kan få dine point?
Avatar billede supertekst Ekspert
08. april 2013 - 12:07 #9
Der gør jeg så og selv tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester