Страницы: 1
RSS
Макрос для монтекарло симуляции
 
Добрый День, Коллеги! Столкнулся с такой проблемой, что не работает созданный макрос. Пишет в ошибке, что Sub or function not defined. Подскажите, пожалуйста, что неправильно в макросе я делаю? Работать он должен следующим образом. У меня курс USDRUB на каждую дату случайно генерится, дат около 20, результирующее значение - это средний сгенерированный курс по этим датам. Я хочу провести допустим 10 симуляций, и из каждой симуляции вывести результирующий курс в столбец, т.е. для 10 итераций должно быть 10 значений в столбце. В данном случая я сделал макрос для 3 курсов, т.к. необходимо будет вывести 3 таких столбца, но для простоты пока ограничился одним результирующим значение в столбец - Rate_MonteCarlo
Код
Sub Monte_Carlo()
' Choosing number of simulations
k = Range("Number_of_Simulations").Value
    
    '
' Inserting links on random variables and making Monte-Carlo Calculations
   
    
     Sheets("Rates").Select
    Range("USDRUB_Link").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        
    
        Sheets("Rates").Select
    Range("EURUSD_Link").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        
        Sheets("Rates").Select
    Range("EURJPY_Link").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    
    For i = 1 To k
    
        Sheets("Rates").Select
    Range("MC_USDRUB").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Rates").Select
    Range("USDRUB_Link").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        
        Sheets("Rates").Select
    Range("MC_EURUSD").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Rates").Select
    Range("EURUSD_Link").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        
         Sheets("Rates").Select
    Range("MC_EURJPY").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Rates").Select
    Range("EURJPY_Link").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    
        
        
   
    Sheets("Rates").Select
    Range("Rate_MonteCarlo").Select
    Selection.Copy
  Range("MC").Item(i, 1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        
  Application.StatusBar = i
        Next
        
        
        
    
    ' Inserting old links after procedure
Sheets("Rates").Select
 
       
          Range("USDRUB_Link").Offset(-1, 0).Select
    Selection.Copy
    Range("USDRUB_Link").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
          Selection.Offset(-1, 0).Select
         Selection.ClearContents
        
       Range("EURUSD_Link").Offset(-1, 0).Select
    Selection.Copy
    Range("EURUSD_Link").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
          Selection.Offset(-1, 0).Select
         Selection.ClearContents
        
           Range("EURJPY_Link").Offset(-1, 0).Select
    Selection.Copy
    Range("EURJPY_Link").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
          Selection.Offset(-1, 0).Select
         Selection.ClearContents
        
     
    

End Sub

Изменено: Albert933 - 28.02.2019 09:35:26
 
Код
Call Calculation
???
 
Спасибо. Действительно лишняя функция. Но теперь после её удаления макрос остался нерабочим,  выводит ошибку 400.
 
Код
 Range("MC_EURJPY").Select

у вас нет такого.

П.С. Select-ы почистите.
Код
Sheets("Rates").Select
    Range("USDRUB_Link").Select
    Selection.Copy
можно записать так
Sheets("Rates").Range("USDRUB_Link").Copy
Изменено: V - 28.02.2019 09:45:10
Страницы: 1
Наверх