Visual Basic-macro maken met Excel Oplosser in Excel 97

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 843304 - Bekijk de producten waarop dit artikel van toepassing is.
Alles uitklappen | Alles samenvouwen

Op deze pagina

Samenvatting

Dit artikel wordt beschreven hoe u Microsoft Visual Basic-macro's maken met Microsoft Excel Oplosser in Microsoft Excel 97. Microsoft Excel Oplosser is een invoegtoepassing van Microsoft Excel.

Daarnaast bevat dit artikel informatie over het maken van macro's, het ontwerpen van een macro en werken met de beperkingen van een macro. In dit artikel wordt ook beschreven algoritmen en methoden die worden gebruikt door Microsoft Excel Oplosser. De volgende lijst bevat alle onderwerpen in het artikel.

INLEIDING

Dit artikel bevat informatie over Microsoft Excel Oplosser.

Meer informatie

Beschrijving van Microsoft Excel Oplosser

Microsoft Excel Oplosser is een Microsoft Excel toevoegen in. Microsoft Excel Oplosser helpt u kunt bepalen van de optimale waarde voor een formule in een bepaalde cel in een Microsoft Excel-werkblad. Microsoft Excel Oplosser past de waarden van andere cellen die zijn gerelateerd aan de doelcel met een vergelijking. Nadat u een vergelijking maken en definiëren van parameters of beperkingen voor de variabelen in de vergelijking, probeert Microsoft Excel Oplosser diverse oplossingen te komen tot een het antwoord dat voldoet aan alle beperkingen. Microsoft Excel Oplosser maakt gebruik van de volgende elementen een vergelijking 'oplossen':
  • Doelcel-De doelcel is het doel. Is de cel in het werkbladmodel dat zal worden geminimaliseerd gemaximaliseerd of een bepaalde waarde.
  • Veranderende cellen-Veranderende cellen zijn de variabelen besluit. Deze cellen van invloed op de waarde van de doelcel. Deze cellen zijn gewijzigd door Microsoft Excel Oplosser de optimale oplossing vinden voor de doelcel.
  • Beperkingen-Beperkingen zijn beperkingen van de inhoud van cellen. Voor bijvoorbeeld een cel in een werkbladmodel kan worden beperkt tot de gehele waarden terwijl een andere cel beperkt worden kan tot minder dan een bepaalde waarde.
U kunt het maken en bewerken van Microsoft Excel Oplosser-modellen door automatiseren met een Microsoft Visual Basic for Applications (VBA)-macro. In dit artikel wordt beschreven hoe u de taal van de macro VBA gebruiken de Microsoft Excel Oplosser-functies in Microsoft Excel 97. In dit artikel wordt ervan uitgegaan dat u bekend met de VBA-taal en Microsoft Visual Basic Editor voor Microsoft Excel bent 97 De voorbeelden in dit artikel gebruikt kunnen worden gedownload op de volgende Microsoft-website:
http://download.Microsoft.com/download/excel97win/solverex/1.0/WIN98Me/en-us/SolverEx.exe
OpmerkingU kunt ook de macro's en de voorbeelden in dit artikel artikel in Microsoft Excel versie 5.0 en 7.0.

Microsoft Excel Oplosser-functies gebruiken in een VBA-macro

De functies van Microsoft Excel Oplosser gebruiken in een VBA-macro u moet verwijzen naar de invoegtoepassing uit het VBA-project van de werkmap die de macro's bevat. Als u niet verwijzen naar de Microsoft Excel Oplosser-invoegtoepassing, wordt de volgende compileerfout wanneer u de macro wilt uitvoeren:
Compileerfout: Sub of functie niet gedefinieerd.
Naar Microsoft Excel Oplosser-invoegtoepassing voor macro's in uw werkmap verwijzen, gebruikt u de volgende stappen:
  1. Open de werkmap.
  2. Op deExtrain het menuMacro, en klik vervolgens opVisual Basic Editor.
  3. Op deExtramenu, klik opVerwijzingen.
  4. In deBeschikbare verwijzingenop Selecteer deSolver.xlsen klik vervolgens opOK.

    OpmerkingAls er Solver.xls in deBeschikbare verwijzingenopBladeren. In deToevoegen Verwijzingdialoogvenster vak en selecteer het bestand Oplosser en Klik opOpen. De Oplosser-bestand meestal gevonden in de C:\Program Files\Microsoft Office\Office\Library\Solver submap.
U bent nu klaar om de functies van Microsoft Excel Oplosser gebruiken in een VBA-macro.

Het ontwerpen van een VBA-macro maakt en een eenvoudige Microsoft Excel Oplosser-model opgelost

Hoewel Microsoft Excel Oplosser vele functies, de volgende drie biedt functies zijn fundamenteel maken en het oplossen van een model:
  • DeSolverOKfunctie
  • DeSolverSolvefunctie
  • DeSolverFinishfunctie

De functie SolverOK

DeSolverOKfunctie definieert een eenvoudige Microsoft Excel Oplosser-model. DeSolverOKfunctie is algemeen de eerste functie waarmee u uw Microsoft Excel Oplosser-model te maken. DeSolverOKfunctie is gelijk aanOplosserop deExtramenu en geven de opties die in deParameters Oplosserhet dialoogvenster. Het volgende is de syntaxis voor deSolverOKfunctie:
SolverOK (MaxMinVal, ValueOf, ByChange SetCell)
De volgende informatie beschrijft de syntaxis voor deSolverOKfunctie:
  • SetCellHiermee geeft u de doelcel.
  • MaxMinValkomt overeen met of wilt u de doelcel oplossen voor een maximale waarde (1), minimale waarde (2) of een bepaalde waarde (3).
  • ValueOfgeeft de waarde waarmee de doelcel wordt vergeleken. Als u instellenMaxMinVal3, moet u dit argument opgeeft. Als uMaxMinVal1 of 2 kunt u dit argument weglaten.
  • ByChangeHiermee geeft u de cel of het cellenbereik dat wordt gewijzigd.
Figuur 1 koppelt de argumenten voor deSolverOKwerken met de parameters in deParameters Oplosserhet dialoogvenster.

Figuur 1. Parameters die zijn gekoppeld aan deSolverOKargumenten

Deze afbeelding samenvouwenDeze afbeelding uitklappen
Figuur 1. Parameters die gekoppeld zijn

		  met de argumenten SolverOK


De functie SolverSolve

DeSolverSolvefunctie is het model met de parameters opgelost die u met deSolverOKfunctie. Uitvoeren van deSolverSolvefunctie is gelijk klikkenOplossenin deParameters Oplosserhet dialoogvenster. Het volgende is de syntaxis voor deSolverSolvefunctie:
SolverSolve (UserFinish, ShowRef)
De volgende informatie beschrijft de syntaxis voor deSolverSolvefunctie:
  • UserFinishgeeft aan of u wilt dat de gebruiker klaar met het oplossen van het model.

    Om de resultaten zonder deOplosser Resultatendialoogvenster vak, dit argument instellen op TRUE. De resultaten en deOplosserdialoogvenster vak, dit argument instellen False
  • ShowRefgeeft de macro die wordt aangeroepen wanneer Microsoft Excel Oplosser retourneert een tussenoplossing.

    DeShowRefargument moet alleen worden gebruikt als TRUE wordt doorgegeven aan deStepThruargument van deSolverOptionsfunctie.

De functie SolverFinish

DeSolverFinishfunctie geeft aan wat te doen met de resultaten en welk rapport maken nadat de oplossing is voltooid. Het volgende is de syntaxis voor deSolverFinishfunctie:
SolverFinish (KeepFinal gelijk, ReportArray)
De volgende informatie beschrijft de syntaxis voor deSolverFinishfunctie:
  • KeepFinal gelijkgeeft aan wat te doen met de uiteindelijke resultaten. AlsKeepFinal gelijk1 de uiteindelijke oplossing waarden in de veranderende cellen worden bewaard de waarden vervangen. AlsKeepFinal gelijkwaarden van de uiteindelijke oplossing genegeerd, 2, en de voormalige waarden worden hersteld.
  • ReportArrayHiermee geeft u de matrix het type rapport Microsoft geeft Excel maakt wanneer de oplossing is bereikt. AlsReportArrayis ingesteld op 1, Microsoft Excel maakt een rapport antwoord. Indien ingesteld op 2, Microsoft Excel maakt een rapport gevoeligheid en ingesteld op 3, Microsoft Excel maakt een rapport grenzen. Zie voor meer informatie over deze rapporten "Rapporten genereren voor oplossingen'sectie.
Figuur 2. Microsoft Excel Oplosser resultaten opties die gekoppeld zijn metSolverFinishargumenten

Deze afbeelding samenvouwenDeze afbeelding uitklappen
Figuur 2. Opties Oplosser resultaten

		  die zijn gekoppeld aan SolverFinish argumenten


In dit artikel wordt beschreven hoe u een eenvoudige Microsoft Excel Oplosser-model interactief maken. De eerste stap is Maak uw werkblad voor het model. Het werkblad bevatten gegevenscellen en ten minste één cel een formule bevat. Deze formule is afhankelijk van de andere cellen in het werkblad. Nadat u het werkblad hebt ingesteld, klikt u opOplosserop deExtramenu. In deParameters Oplosserdialoogvenster Geef de doelcel, de waarde die u oplossen voor het cellenbereik dat wordt gewijzigd, en de beperkingen. Klik opOplossenu start de oplossing. Nadat Microsoft Excel Oplosser een oplossing heeft gevonden, worden de resultaten weergegeven in het werkblad en Microsoft Excel Oplosser verschijnt een bericht waarin u wordt gevraagd als u wilt bewaren van de definitieve resultaten of Als u deze verwijderen. Wanneer u een van deze opties klikt, wordt Microsoft Excel Oplosser is voltooid.

Figuur 3 een eenvoudige model maken kunt met behulp van deze stappen ziet.

Figuur 3. Een eenvoudige model: de vierkantswortel model

Deze afbeelding samenvouwenDeze afbeelding uitklappen
Figuur 3. EEN

		  eenvoudige model: de vierkantswortel model


In dit voorbeeld wijziging cel A1, waarin de formule = A1 ^ 2 waarde maken cel A2 gelijk aan de waarde 50. Met andere woorden, de vierkantswortel zoeken 50. Er zijn geen beperkingen in het model vierkantswortel. DeFind_Square_Rootmacro we de volgende taken:
  • Wordt een model dat de waarde van cel A2 voor de waarde 50 door oplossen de waarde van cel A1 wijzigen.
  • Het model opgelost.
  • Definitieve resultaten worden opgeslagen in het werkblad zonder weergeven van deOplosserhet dialoogvenster.
Deze eenvoudige macro maakt een Microsoft Excel Oplosser-model en is opgelost het zonder tussenkomst van de gebruiker. De volgende code beschrijft deFind_Square_Rootmacro:
    Sub Find_Square_Root()

    ' Set up the parameters for the model.
    ' Set the target cell A2 to a value of 50 by changing cell A1.
    SolverOK SetCell:=Range("A2"), MaxMinVal:=3, ValueOf:=50, _
         ByChange:=Range("A1")

    ' Solve the model but do not display the Solver Results dialog box.
    SolverSolve UserFinish:=True

    ' Finish and keep the final results.
    SolverFinish KeepFinal:=1

    End Sub
DeFind_Square_Root2macro is een gewijzigde versie van deFind_Square_Rootmacro. Als u deInputBoxfunctie, deFind_Square_Root2macro gevraagd de waarde die u voor de doelcel wilt oplossen. Nadat u een waarde invoeren deFind_Square_Root2macro wordt deze parameter ingesteld als de waarde van deSolverOKvalueOfargument, het probleem is opgelost, slaat de resultaten in de variabele vierkantswortel, negeert de oplossing en herstelt u de waarde in het werkblad de oorspronkelijke staat. In principe deFind_Square_Root2macro ziet u hoe u de resultaten opslaan in een of meer variabelen en vervolgens terugzetten op hun oorspronkelijke waarde de veranderende cellen.

De volgende code beschrijft deFind_Square_Root2macro:
    Sub Find_Square_Root2()

    Dim val
    Dim sqroot

    ' Request the value for which you want to obtain the square root.
    val = Application.InputBox( _
         prompt:="Please enter the value for which you want " & _
         "to find the square root:", Type:=1)

    ' Set up the parameters for the model.
    SolverOK SetCell:=Range("A2"), MaxMinVal:=3, ValueOf:=val, _
         ByChange:=Range("A1")

    ' Do not display the Solver Results dialog box.
    SolverSolve UserFinish:=True

    ' Save the value of cell A1 (the changing cell) before you discard 
    ' the results.
    sqroot = Range("a1")

    ' Finish and discard the results.
    SolverFinish KeepFinal:=2

    ' Show the result in a message box.
    MsgBox "The square root of " & val & " is " & Format(sqroot, "0.00")

    End Sub

Rapporten genereren voor oplossingen

Microsoft Excel Oplosser biedt verschillende typen rapporten die beschrijven hoe de resultaten gewijzigd en hoe dicht de beperkingen op de kritieke waarden afkomstig. Elk rapport in een afzonderlijk werkblad in de werkmap geplaatst. Na zijn de typen rapporten dat Microsoft Excel Oplosser biedt:
  • Antwoordrapport-Het Antwoordrapport bevat de doelcel en de veranderende cellen met de bijbehorende oorspronkelijke en uiteindelijke waarden, restricties en informatie over de beperkingen.
  • Rapport gevoeligheid-De gevoeligheid rapport bevat informatie over hoe gevoelige de oplossing is voor kleine veranderingen in de formule voor de doelcel.
  • Rapport grenzen-Het rapport beperkt bevat de doelcel en de veranderende cellen met de bijbehorende waarden, de bovenste en onderste grenswaarden en het doel waarden.
Rapporten maken voor uw modellen, geeft een matrix met waarden voor deReportArrayargument van deSolverFinishfunctie. Voor meer informatie over deReportArrayargument, Zie de "SolverFinish (KeepFinal gelijk, ReportArray)'sectie. Als u wilt een beperkt rapport genereren het model dat deFind_Square_Root2macro gemaakt en is opgelost, wijzigt deSolverFinishfunctie de macro zo dat deze op de volgende voorbeeldcode lijkt:
    SolverFinish KeepFinal:=2, ReportArray:= Array(3)
Meerdere rapporten wijzigen deSolverFinishfunctie zodat het lijkt op de volgende voorbeeldcode:
    SolverFinish KeepFinal:=2, ReportArray:= Array(1,2)

Microsoft ExcelSolver-functies gebruiken in een macro samenvoegartikel

In veel gevallen is het verstandig Microsoft Excel Oplosser oplossen de cel voor meerdere waarden. U kunt dit meestal doen door een van de samenvoegartikel structuren die beschikbaar in VBA zijn.

DeCreate_Square_Root_Tablemacro laat zien hoe Microsoft Excel Oplosser functioneert in een samenvoegartikel macro. DeCreate_Square_Root_Tablemacro maakt een tabel in een nieuw werkblad. Deze getallen een ingevoegd-10 en de bijbehorende vierkantswortel van elk nummer. DeCreate_Square_Root_Tablemacro maakt de tabel met eenVoorlus doorlopen van de getallen 1 tot en met 10 en lossen de cel in de vierkantswortel model voor een waarde die overeenkomt met het nummer van de iteratie. De volgende code beschrijft deCreate_Square_Root_Tablemacro:
    Sub Create_Square_Root_Table()

    ' Add a new worksheet to the workbook.
    Set w = Worksheets.Add

    ' Put the value 2 in cell C1 and the formula =C1^2 in cell C2.
    w.Range("C1").Value = 2
    w.Range("C2").Formula = "=C1^2"

    ' A loop that will make 10 iterations, starting with the number 1, 
    ' and finishing at the number 10.
    For i = 1 To 10

        ' Set the Solver parameters that indicate that Solver should
        ' solve the cell C2 for the value of i (where i is the number
        ' of the iteration) by changing cell C1.
        SolverOk SetCell:=Range("C2"), ByChange:=Range("C1"), _
            MaxMinVal:=3, ValueOf:=i

        ' Do not display the Solver Results dialog box.
        SolverSolve UserFinish:=True

        ' Save the value of i in column A and the results of the 
        ' changing cell in column B.
        w.Cells(i, 1) = i
        w.Cells(i, 2) = Range("C1")

        ' Finish and discard the final results.
        SolverFinish KeepFinal:=2

    Next

    ' Clear the range C1:C2
    w.Range("C1:C2").Clear

    End Sub

DeCreate_Square_Root_Tablemacro genereert de tabel geïllustreerd in afbeelding 4.

Figuur 4. Uitvoer wordt gegenereerd door deCreate_Square_Root_Tablemacro

Deze afbeelding samenvouwenDeze afbeelding uitklappen
Figuur 4. Uitvoer wordt gegenereerd door de

		  De macro Create Square Root Table


Werken met beperkingen

Een beperking is een beperking van de inhoud van een of meer cellen. Een model kan een of meerdere beperkingen hebben. De beperking ingesteld is een instellen van ongelijkheden of de equalities bepaalde combinaties van waarden verwijderen voor de variabelen van het besluit van de oplossing. Zo kan een beperking vereisen dat één cel groter dan nul zijn en een andere cel bevatten alleen een geheel getal.

De vierkantswortel model die we tot nu toe hebben besproken is een eenvoudige model geen beperkingen. Figuur 5 illustreert een model dat beperkingen gebruikt. Het doel van dit model is de optimale zoeken combinatie van producten voor maximale winst.

Figuur 5. Productmix met leidde winstmarge

Deze afbeelding samenvouwenDeze afbeelding uitklappen
Figuur 5. Productmix met

		  degressieve winstmarge


Als een bedrijf produceert tv's, bijvoorbeeld stereo-installaties, en luidsprekers en het gebruikt een gemeenschappelijke onderdelenvoorraad van voedingen, luidspreker kegels, enzovoort. De onderdelen worden in beperkte aanbod. Uw doel is bepaalt de meest winstgevende mix van producten te bouwen. Uw winst per eenheid met volume verkleind omdat extra prijs stimuleringsmaatregelen vereist zijn voor het laden de distributiekanaal. De exponent diminishing resultaat is 0,9. Deze exponent voor het berekenen van de winst per product in het bereik G11:I11.

Uw doel is de maximale winst (cel G14) vinden. De waarden die u de maximale winst zijn het aantal eenheden die u maakt wijzigen. De G9:G11 bereik vertegenwoordigt de veranderende cellen in dit model. De enige beperking is dat het aantal onderdelen dat u het aantal onderdelen dat u hebt niet overschrijden voorhanden. Met Microsoft Excel Oplosser deze beperking wordt weergegeven als E3:E7<=b3:b7. if="" you="" were="" to="" build="" this="" microsoft="" excel="" solver="" model="" interactively,="" the="" microsoft="" excel="" solver="" parameters="" would="" look="" similar="" to="" those="" that="" are="" in="" figure="" 6.=""></=b3:b7.>

Figuur 6. Microsoft Excel Oplosser-parameters voor de productmix winstmarge leidde model

Deze afbeelding samenvouwenDeze afbeelding uitklappen
Figuur 6. Parameters voor Microsoft Excel Oplosser

		  de productmix winstmarge leidde model


Maken en de productmix winstmarge leidde model oplossen, gebruikt u een nieuwe functie, deSolverAddfunctie naast de Microsoft Excel Oplosser VBA-functies die zijn eerder is beschreven. DeSolverAddde beperking aan het model toegevoegd. Uitvoeren van deSolverAddfunctie is gelijk aan klikken op deToevoegenknop in deParameters Oplosserhet dialoogvenster. DeSolverAddfunctie heeft de volgende syntaxis:
SolverAdd (CellRef relatie, FormulaText)
De volgende informatie beschrijft de syntaxis voor deSolverAddfunctie:
  • CellRefverwijst naar een of meer cellen die de linkerkant van de beperking.
  • Relatiede rekenkundige relatie tussen de linkerkant en rechterkant van een beperking.
  • RelatieDit kan een waarde tussen 1 en 5 in het volgende voorbeeld:
    • De waarde 1 is kleiner dan of gelijk aan)<=).></=).>
    • Vaue 2 is gelijk aan (=).
    • De waarde 3 is groter dan of gelijk aan (> =).
    • De waarde 4 is een geheel getal.
    • De waarde 5 is het binaire bestand (een waarde van nul of één).
  • FormulaTextverwijst naar een of meer cellen die aan de rechterkant van de CONSTRAINT.* *
** Bij het opgeven van een bereik van cellen voor deFormulaTextargument van deSolverAddfunctie, opmerking of de verwijzing relatief of absoluut is. Meestal moet u een absoluut verwijzing voor deFormulaTextargument. Echter, als u opgeeft relatieve verwijzingen voor deFormulaTextargument dat de verwijzing wordt ten opzichte van de cel en niet de actieve cel.

OpmerkingIn Microsoft Excel 5.0 en 7.0, de R1C1-notatie gebruiken Wanneer u een cel of een cellenbereik met deFormulaTextargument. Gebruik daarentegen A1-stijl in Microsoft Excel 97 notatie opgeven deFormulaTextargument.

Figuur 7. Velden die zijn gekoppeld aan deSolverAddargumenten

Deze afbeelding samenvouwenDeze afbeelding uitklappen
Figuur 7. Velden die zijn gekoppeld

		  de argumenten SolverAdd


DeMaximum_Profitmacro een model voor de productmix met Diminishing genereert Model retourneert. Deze macro wordt uitgevoerd de volgende functies of argumenten:

  • DeSolverOKfunctie stelt de doelcel een maximum waarde en Hiermee geeft u de cellen wilt wijzigen.
  • DeSolverAddde beperking aan het model toegevoegd.
  • DeSolverSolvefunctie een oplossing wordt gevonden zonder deOplosserhet dialoogvenster.
  • DeSolverFinishfunctie retourneert het definitieve resultaten naar het werkblad.
De volgende code beschrijft de voorMaximum_Profitmacro:
    Sub Maximum_Profit()

    ' Set up the parameters for the model.
    ' Determine the maximum value for the sum of profits in cell G14
    ' by changing the number of units to build in cells G9:I9.
    Solverok setcell:=Range("G14"), maxminval:=1, _
        bychange:=Range("G9:I9")

    ' Add the constraint for the model. The only constraint is that the
    ' number of parts used does not exceed the parts on hand-- 
    ' E3:E7<=B3:B7
    SolverAdd CellRef:=Range("E3:E7"), Relation:=1, _
        FormulaText:="$B$3:$B$7"

    ' Do not display the Solver Results dialog box.
    SolverSolve UserFinish:=True

    ' Finish and keep the final results.
    SolverFinish KeepFinal:=1

    End Sub

OpmerkingIn Microsoft Excel 5.0 en 7.0, de R1C1-notatie gebruiken Wanneer u een cel of cellenbereik met deFormulaTextargument. Gebruik daarentegen A1-stijl in Microsoft Excel 97 notatie opgeven deFormulaTextargument.

Bij het uitvoeren van deMaximum_Profitmacro Microsoft Excel Oplosser vindt een oplossing bouwen 160 televisies 200 stereo-installaties en 80 luidsprekers voor maximale winst van $14,917 dollar.

Het wijzigen en verwijderen van beperkingen

Beperkingen in uw model programmatisch kunnen worden gewijzigd of verwijderd. Beperkingen worden geïdentificeerd door hunCellRefenRelatieargumenten.

Een bestaande programmacode wijzigen beperking gebruiken deSolverChangefunctie. Het volgende is de syntaxis voor deSolverChangefunctie:
SolverChange (CellRef relatie, FormulaText)
Dat de argumenten voor deSolverChangefunctie zijn dezelfde die u met deSolverAddfunctie.

Als u wilt beperking in de productmix Diminishing retourneert model wijzigen u gebruikt deSolverChangefunctie. Bijvoorbeeld momenteel de beperking die opgegeven aantal gebruikte onderdelen is kleiner dan of gelijk aan de aantal onderdelen op voorraad (E3:E7<= b3:b7).="" if="" you="" want="" to="" change="" this="" constraint="" so="" that="" the="" number="" of="" parts="" used="" is="" less="" than="" or="" equal="" to="" the="" number="" of="" parts="" projected="" (number="" of="" parts="" on="" hand="" plus="" number="" of="" parts="" ordered).="" this="" new="" constraint="" would="" look="" like="" e3:e7=""></=><= d3:d7.="" the="" following="" macro="" would="" change="" the="" existing="" constraint=""></=><=b3:b7 to="" e3:e7=""></=b3:b7><= d3:d7="" and="" solve="" for="" a="" solution.=""></=>

De volgende code beschrijft deChange_Constraint_and_Solvemacro:
    Sub Change_Constraint_and_Solve()

    ' Change the constraint.
    SolverChange CellRef:=Range("E3:E7"), Relation:=1, _
       FormulaText:="$D$3:$D$7"

    ' Return the results and display the Solver Results dialog box.
    SolverSolve UserFinish:=False

    End Sub

Omdat beperkingen worden geïdentificeerd door deCellRefenRelatieargumenten, kunt u alleen wijzigen deFormulaTexthet argument voor de beperking met behulp van deSolverChangefunctie. Als deCellRefen deRelatieeen beperking van de bestaande waarden niet overeenkomen, moet u verwijderen de beperking en voeg de gewijzigde beperking. Verwijderen van een beperking gebruiken deSolverDeletefunctie. Het volgende is de syntaxis voor deSolverDeletefunctie:

SolverDelete (CellRef relatie, FormulaText)

Dat de argumenten voor deSolverDeletefunctie zijn dezelfde die u wilt gebruiken met deSolverAdden deSolverChangefuncties.

De volgende macro ziet u hoe te verwijderen en een beperking toevoegen. In dit voorbeeld deChange_Constraint_and_Solve2macro verwijdert de beperking E3:E7<=b3:b7 from="" the="" product="" mix="" with="" diminishing="" returns="" model="" and="" adds="" a="" new="" constraint.="" the="" new="" constraint="" is="" just="" a="" modification="" of="" the="" original="" constraint,="" where="" the="" left="" and="" right="" sides="" of="" the="" constraint="" are="" reversed.=""></=b3:b7>

De volgende code beschrijft deChange_Constraint_and_Solve2macro:
    Sub Change_Constraint_and_Solve2()

    ' Reverse the left and right sides of the constraint...
    ' Delete the constraint E3:E7<=B3:B7 and add the
    ' constraint B3:B7>=E3:E7.
    SolverDelete CellRef:=Range("E3:E7"), Relation:=1, _
        FormulaText:="$B$3:$B$7"
    SolverAdd CellRef:=Range("B3:B7"), Relation:=3, _
        FormulaText:="$E$3:$E$7"
    
    ' Return the results and display the Solver Results dialog box.
    SolverSolve UserFinish:=False
    
    End Sub

OpmerkingIn Microsoft Excel 5.0 en 7.0, de R1C1-notatie gebruiken Wanneer u een cel of cellenbereik met deFormulaTextargument. Gebruik daarentegen A1-stijl in Microsoft Excel 97 notatie opgeven deFormulaTextargument.

Laden en opslaan van uw modellen

Wanneer u een werkmap opslaat, de laatste parameters die u opgegeven in deParameters Oplosserhet dialoogvenster opgeslagen met de werkmap. Wanneer u de werkmap opent, de parameters zijn daarom de hetzelfde als wanneer u de werkmap laatst opgeslagen.

U kunt definiëren meer dan één probleem voor een werkblad. Elk probleem bestaat van cellen en beperkingen die u invoert in deOplosser-Parameteren deOpties Oplosserdialoogvensters. Omdat alleen het laatste probleem met opgeslagen het werkblad verloren alle problemen tenzij expliciet opslaat ze. Opslaan, klikt u opModel opslaanin deOplosser Optieshet dialoogvenster. Evenzo als u wilt terugzetten de eerder opgeslagen parameters, klik opModel ladenin deOplosser Optieshet dialoogvenster.

Oplosser-modellen worden opgeslagen in een reeks cellen in een werkblad. De eerste cel in het bereik bevat de formule voor de de doelcel. De tweede cel in het bereik bevat de formule geeft de veranderende cellen in het model. De laatste cel in het bereik bevat een matrix dat geeft de opties instellen in deOpties Oplosserdialoogvenster vak. Tussen de tweede cel en de laatste cel cellen bevatten formules die beperkingen in het model aangeven.

Figuur 8 ziet u een model voor werknemers plannen. Stel dat u voor een kleine werkt de fabrikant. Deze tabel bevat een uurtarief van salaris, het nummer van de werknemer uren zij geplande en verwachte aantal eenheden van elke werknemer kan in één uur produceren. Uw doel is om te voldoen aan specifieke quota voor het aantal minimaliseren van de kosten van arbeid geproduceerde eenheden.

Figuur 8. Werknemer Modus plannen
l
Deze afbeelding samenvouwenDeze afbeelding uitklappen
Figuur 8. Werknemer plannen

		  model


Twee extra factoren (of beperkingen) moet u Overweeg de minimum/maximum aantal uren een werknemer kan werken en het aantal eenheden dat u wilt produceren. Als voor een opgegeven week moet Nr. 3975 produceren wilt eenheden en u dat elke werknemer werkt tussen 30 en 45 uren, zou Microsoft Excel Oplosser parameters uitzien in de hieronder uiteengezette tabel:

Deze tabel samenvouwenDeze tabel uitklappen
ParameterCelbereikBeschrijving
Doelcel$D$ 12Kosten van arbeid.
Veranderende cellen$C$ 2:$ C$ 8Gewerkte uren per werknemer.
Beperkingen$C$ 2:$ C$ 8<= 45=""></=>Maximum uren per werknemer is 45.
$C$ 2:$ C$ 8 > = 30Minimale uren per werknemer is 35.
$G NR. $12 = 3975Aantal eenheden is nr. 3975.


Uw doelstellingen worden opgelost voor optimale arbeid kosten op een wekelijks Wekelijks elke model opslaan en laden van een wekelijks Wanneer u het model.

In een macro Microsoft Excel Oplosser parameters voor een model kunnen worden opgeslagen en geladen met deSolverSaveen deSolverLoadfuncties respectievelijk. DeSolverSaveen deSolverLoadhebt u de volgende functies Syntaxis:

SolverSave (SaveArea)

SolverLoad (LoadArea)

DeSolverSaveen deSolverLoadfuncties die elk hebben slechts één argumentSaveAreaen deLoadAreaargumenten respectievelijk. Deze argumenten opgeven een bereik op een werkblad waar de informatie is opgeslagen.

De volgendeNew_Employee_Schedulemacro ziet u hoe maken, oplossen en een gebaseerd model opslaan gebruikersinvoer. De gebruiker wordt gevraagd om de datum van het model, het aantal eenheden voor de productie en het minimum en maximum aantal uren per werknemer. Deze gegevens wordt vervolgens gebruikt om het model te maken. Het model is opgelost en met de invoer van de gebruiker opgeslagen.

De volgende code beschrijft deNew_Employee_Schedulemacro:
    Sub New_Employee_Schedule()
    
    ' Prompt the user for the date of the model, the units to produce,
    ' and the maximum and minimum number of hours per employee.
    ModelDate = Application.InputBox( _
       Prompt:="Date of Model:", Type:=2)
    Units = Application.InputBox( _
       Prompt:="Projected Number of Units:", Type:=1)
    MaxHrs = Application.InputBox( _
       Prompt:="Maximum Number of Hours Per Employee:", Type:=1)
    MinHrs = Application.InputBox( _
       Prompt:="Minimum Number of Hours Per Employee:", Type:=1)
    
    ' Clear any previous Solver settings.
    SolverReset
    
    ' Set the target cell, D12, to a minimum value by changing
    ' the range, C2:C8.
    SolverOk SetCell:=Range("$D$12"), MaxMinVal:=2, _
       ByChange:=Range("C2:C8")
    
    ' Add the constraint that number of hours worked <= MaxHrs.
    SolverAdd CellRef:=Range("C2:C8"), Relation:=1, FormulaText:=MaxHrs
    
    ' Add the constraint that number of hours worked >=MinHrs.
    SolverAdd CellRef:=Range("C2:C8"), Relation:=3, FormulaText:=MinHrs
    
    ' Add the constraint that number of units produced = Units.
    SolverAdd CellRef:=Range("G12"), Relation:=2, FormulaText:=Units
    
    ' Solve the model and keep the final results.
    SolverSolve UserFinish:=True
    SolverFinish KeepFinal:=1
    
    ' Save the input values for ModelDate, MaxHrs, MinHrs, and Units
    ' in columns I:L.
    Set ModelRange = Range("I2:R2").CurrentRegion.Offset( _
       Range("I2:R2").CurrentRegion.Rows.Count).Resize(1, 1)
    ModelRange.Resize(1, 4) = Array("'" & Format(ModelDate, "m/d/yy"), _
       Units, MaxHrs, MinHrs)
    
    ' Save the model parameters to the range M:R in the worksheet.
    SolverSave SaveArea:=ModelRange.Offset(, 4).Resize(1, 6)
    
    End Sub
OpmerkingIn Microsoft Excel 5.0 en 7.0, de R1C1-notatie gebruiken Wanneer u een cel of cellenbereik met deFormulaTextargument. Gebruik daarentegen A1-stijl in Microsoft Excel 97 notatie opgeven deFormulaTextargument.

Figuur 9 ziet u hoe het model opgeslagen informatie wordt weergegeven op het werkblad.

Figuur 9. Model-informatie dat is opgeslagen door de macro New_Employee_Schedule

Deze afbeelding samenvouwenDeze afbeelding uitklappen
Figuur 9. Model informatie die is opgeslagen

		  door de macro New Employee Schedule


DeNew_Employee_Scheduleelk nieuw model slaat macro het werkblad. DeLoad_Employee_Schedulemacro kan een van deze modellen opgeslagen laden. De macro wordt gevraagd de model laden en vervolgens kolom zoekopdrachten gebruiker ik voor de datum van het model. Als de datum van het model wordt gevonden, deLoad_Employee_Schedulemacro het overeenkomstige model geladen, is opgelost en vervolgens synchroniseert de uiteindelijke resultaten.

De volgende code beschrijft deNew_Employee_Schedulemacro:
    Sub Load_Employee_Schedule()
    
    ' Prompt for the date of the model. 
    ModelDate = Application.InputBox( _
       Prompt:="Date of Model to Load:", Type:=2)
    
    ' Locate the date in column I.
    Set DateRange = Range("I2").CurrentRegion.Resize(, 1)
    r = Application.Match(ModelDate, DateRange, 0)
    
    If IsError(r) Then
        ' Display a message if the model date is not found
        MsgBox "Cannot find a model with the date " & ModelDate
    Else
        ' If the model date is found, load the model into Solver,
        ' solve the model, and keep the final results.
        SolverLoad LoadArea:=DateRange.Offset(r - 1, 4).Resize(1, 6)
        SolverSolve UserFinish:=True
        SolverFinish KeepFinal:=1
    End If
    
    End Sub
DeNew_Employee_Schedulemacro introduceert deSolverResetfunctie. DeSolverResetfunctie kan worden gebruikt voor het verwijderen van alle celselecties en beperkingen in deParameters Oplosserdialoogvenster en alle instellingen opnieuw instellen DeSolverResetheeft geen functie argumenten.

Meer informatie over Microsoft Excel Oplosser zoeken

De volgende bronnen bieden informatie over Microsoft Excel Oplosser invoegtoepassing.

  • Zie voor hulp bij specifieke Oplosser berichtenFrontline Systemen.
  • Zie voor tips over het bouwen van leesbare beheerbare modellenFrontline Systemen.
  • Voor meer informatie over Oplosser beperkt voor beperkingen en klik op het volgende artikelnummer in de Microsoft Knowledge Base:
    75714Beperkingen van Oplosser voor beperkingen
  • Voor enkele voorbeelden van Microsoft Excel Oplosser-invoegtoepassing in Microsoft Excel, Zie het voorbeeldbestand Voorbld2.xls.
  • Het volgende is de standaardlocatie van het voorbeeldbestand bij Microsoft Excel 97:
    \Program Files\Microsoft Office\Office\Examples\Solver\SolvSamp.xls
  • Het volgende is de standaardlocatie van het voorbeeldbestand bij Microsoft Excel 7.0:
    \MSOffice\Excel\Examples\Solver\SolvSamp.xls
  • Het volgende is de standaardlocatie van het voorbeeldbestand bij Microsoft Excel 5.0:
    \Excel\Examples\Solver\SolvSamp.xls

Hoe meer informatie over de algoritmen en methoden die worden gebruikt door Microsoft Excel Oplosser

Microsoft Excel Oplosser maakt gebruik van de Generalized Reduced Gradient (GRG2) niet-lineaire optimalisatiecode die is ontwikkeld door Leon Lasdon van de universiteit van Texas in Austin en Allan Waren van de Cleveland State University.

Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie over het algoritme dat door Microsoft Excel Oplosser gebruikt:
82890Gebruik Oplosser generalized verlaagd


Lineaire en gebruik de simplexmethode met grenzen aan de variabelen en de filialen gebonden methode geïmplementeerd John Watson en Dan Fylstra, Frontline Systems, Inc. Voor meer informatie over het interne oplossingsproces door Oplosser contact:

Frontline Systems, Inc.
P.O. Box 4288
Incline Village, NV 89450-4288 
(702) 831-0300
Web site: http://www.frontsys.com
Electronic mail: info@frontsys.com 


Selecties van Microsoft Excel Oplosser programmacode zijn copyright 1990, 1991, 1992 en 1995 bij Frontline Systems Inc. delen zijn copyright van 1989 bij Optimal Methods, Inc.

OpmerkingDe Microsoft Excel Oplosser-invoegtoepassing die wordt beschreven in dit artikel wordt geleverd "as is" en we niet garanderen dat kan worden gebruikt in alle situaties. Hoewel Microsoft ondersteuning Professionals kunnen helpen bij de installatie en de bestaande functionaliteit invoegtoepassing niet passen de invoegtoepassing nieuwe functionaliteit.

GEEN GARANTIE. De software wordt geleverd "als-is, ' zonder enige garantie, en het gebruik van dit SOFTWAREPRODUCT is voor uw eigen risico.

Eigenschappen

Artikel ID: 843304 - Laatste beoordeling: maandag 28 maart 2011 - Wijziging: 5.0
De informatie in dit artikel is van toepassing op:
  • Microsoft Excel 97 Standard Edition
Trefwoorden: 
kbhowto kbmacroexample kberrmsg kbaddin kbvba kbprogramming kbinfo kbmt KB843304 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende:843304
Vrijwaring inhoud KB-artikelen over niet langer ondersteunde producten
Dit artikel heeft betrekking op producten waarvoor Microsoft geen ondersteuning meer biedt. Daarom wordt dit artikel alleen in de huidige vorm aangeboden en wordt het niet meer bijgewerkt.

Geef ons feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com