VBA Excel: делать что-то каждый раз, когда меняется определенная переменная - PullRequest
2 голосов
/ 17 марта 2010

Я делаю кучу вещей для переменной St

For i = 1 To 30000

 Randomize
 e1 = Rnd
 e2 = Rnd
 z1 = Sqr(-2 * Log(e1)) * Cos(2 * 3.14 * e2)
 z2 = Sqr(-2 * Log(e1)) * Sin(2 * 3.14 * e2)

 St = So * Exp((r - (sigma ^ 2) / 2) * T + sigma * Sqr(T) * z1)
 C = C + Application.WorksheetFunction.Max(St - K, 0)
 St = So * Exp((r - (sigma ^ 2) / 2) * T - sigma * Sqr(T) * z1)
 C = C + Application.WorksheetFunction.Max(St - K, 0)
 St = So * Exp((r - (sigma ^ 2) / 2) * T + sigma * Sqr(T) * z2)
 C = C + Application.WorksheetFunction.Max(St - K, 0)
 St = So * Exp((r - (sigma ^ 2) / 2) * T - sigma * Sqr(T) * z2)
 C = C + Application.WorksheetFunction.Max(St - K, 0)


Next i

как получать уведомления при каждом изменении переменной?

Ответы [ 3 ]

1 голос
/ 17 марта 2010

В Excel VBE вы можете добавить «часы» к каждой переменной. Выберите переменную, перейдите в меню Отладка , нажмите Добавить просмотр ... и затем в Тип просмотра , нажмите Прерывать при изменении значения .

1 голос
/ 17 марта 2010

может быть, это очень наивный ответ, но если вы сделаете функцию, которая вызывает sub, то каждый раз, когда переменная изменяется, функция будет переоцениваться.

1 голос
/ 17 марта 2010

вы можете использовать точки останова или выводить значение St после каждой оценки в столбец вашего файла Excel.

очень раздражающим решением было бы добавить повсюду окна сообщений

еще одним умным решением было бы добавить логику в ваш код, объявив переменную, которая будет хранить предыдущее значение St, а затем сравнить с ним после оценки нового St

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...