2016-06-28 5 views
0

Ich führe eine MonteCarlo Simulation in Excel mit VBA aber ich erhalte nur #Name? Fehler in den jeweiligen Zellen. Wenn ich in eine dieser Zellen klicke, drücke F2 und dann Return, der Fehler verschwindet und der Wert wird richtig berechnet. Was ist hier falsch?#Name? Fehler in Zellen mit VBA-Code

Dies ist die Codezeile den entsprechenden Wert Berechnung:

ActiveCell.Formula = "=Start_Rate * EXP(NORM.S.INV(RAND())* Standard_Deviation * (" & i & " ^1/2)) " 

Und das ist der gesamte Code (falls erforderlich):

Sub MC_Simulation() 

Dim i As Integer 
Dim k As Integer 
Dim StartCell As Range 
Dim start_row As Integer 
Dim start_column As Integer 

iterations = Worksheets("Run_MC").Range("MC_Simulations").Value 
Duration = Worksheets("Run_MC").Range("Duration").Value 
Mean = Worksheets("Run_MC").Range("Mean").Value 
Start_Rate = Worksheets("Run_MC").Range("Start_Rate").Value 
Standard_Deviation = Worksheets("Run_MC").Range("Standard_Deviation").Value 

start_row = 15 
start_column = 1 

For i = 1 To Duration 
    For k = 1 To iterations 

    Worksheets("Run_MC").Cells(start_row, start_column + i).Select 
    Selection.Value = i 
    Worksheets("Run_MC").Cells(start_row + k, start_column).Select 
    Selection.Value = k 
    Worksheets("Run_MC").Cells(start_row + k, start_column + i).Select 
    ActiveCell.Formula = "=Start_Rate * EXP(NORM.S.INV(RAND())* Standard_Deviation * (" & i & " ^1/2)) " 
    'Selection.Value 

    Next k 
Next i 

End Sub 
+0

Wenn es von der Bearbeitungsleiste funktioniert und nicht aus dem Code funktioniert, haben Sie eine lokalisierte Version von Excel und sho ud entweder [FormulaLocal verwenden] (http://stackoverflow.com/q/26625383/11683) aus dem Code oder [die Formel auf Englisch bereitstellen] (http://stackoverflow.com/a/25251099/11683). – GSerg

Antwort

0

Sie müssen die VBA-Variablen aus den Zitaten nehmen :

ActiveCell.Formula = "=" & Start_Rate & "*EXP(NORM.S.INV(RAND())*" & Standard_Deviation & "*(" & i & "^1/2))" 
+0

'Start_Rate' und' Standard_Deviation' sind als benannte Bereiche definiert. Es sollte so funktionieren wie es ist. – GSerg