Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
7 / 7 / 3
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
1

Excel 2007 VBA. Функция с двумя аргументами не хочет работать

31.01.2012, 19:51. Показов 3020. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Компилятор ругается, на CulculationCumulativeNormalFunction (dbDelta1, dbNDFd1)
говорит что функиция ожидает :=... или через раз просто пишет что синтаксическая ошибка...

При этом построил функцию с одной переменной CulculationNormalDensityFunction(dbX As Double) она работает нормально.

В чем может быть проблема ?
Заранее спасибо !



Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
Option Explicit
Dim curCSP As Currency, curSP As Currency, dbGamma As Double, dbNDFd1 As Double, dbDelta As Double, dbCNF As Double, dbNDF As Double, dbSV As Double, dbIr As Double, dbTM As Double, dbCNF_d1 As Double, dbCNF_d2 As Double, dbDelta_two As Double, dbDelta1 As Double, dbNDF1 As Double
 
 
 
 
 
Sub CallOptionCalculator()
 
Dim curValue As Currency
'CurProduct As Currency
'curRate As Currency
'culculater1 As Currency
 
 
 
Range("B1").Activate
curCSP = ActiveCell.Value ' current stock price (= S )
 
Range("B2").Activate
curSP = ActiveCell.Value ' strike price (= K )
 
Range("B3").Activate
dbSV = ActiveCell.Value ' stock volatility (= sigma )
 
Range("B4").Activate
dbIr = ActiveCell.Value ' interest rate (= r )
 
Range("B5").Activate
dbTM = ActiveCell.Value ' time to maturity (= T )
 
 
 
 
 
           Dim A As Currency
 
            
            'MsgBox ("Your A is " & A) ' debugging line
            
             CulculationDelta1Function
            
             MsgBox ("Your dbDelta1 is " & dbDelta1) ' debugging line
          
                        
             CulculationNormalDensityFunction (dbDelta1) ' = n(x)
          
             MsgBox ("Your n(x) is " & CulculationNormalDensityFunction(dbDelta1)) ' debugging line
             
             dbNDFd1 = CulculationNormalDensityFunction(dbDelta1)
 
dbNDFd1 = 1
             
             CulculationCumulativeNormalFunction (dbDelta1, dbNDFd1)
            
                                                       
 
End Sub
_______________________________________________________________
Function CulculationCumulativeNormalFunction(dbDelta As Double, dbNDF As Double) As Double
 
 
 
Const factorGamma = 0.2316419
Const factorA1 = 0.31938153
Const factorA2 = -0.356563782
Const factorA3 = 1.781477937
Const factorA4 = -1.821255978
Const factorA5 = 1.330274429
 
Dim factorK As Double
 
 
 
factorK = 1 / (1 + factorGamma * dbDelta)
 
 
CulculationCumulativeNormalFunction = Round(1 - dbNDF * (factorA1 * factorK + factorA2 * (factorK ^ 2) + factorA3 * (factorK ^ 3) + factorA4 * (factorK ^ 4) + factorA5 * (factorK ^ 5)), 6)
 
'MsgBox ("Your dbCNF is " & dbCNF) ' debugging line
 
End Function
_______________________________________________________________
Function CulculationNormalDensityFunction(dbX As Double) ' = n(x)
 
Const PI = 3.14159265358979
 
'dbX = dbDelta1
 
CulculationNormalDensityFunction = Round((1 / Sqr(2 * PI)) * Exp(-(dbX ^ 2) / 2), 6)
 
'where NDF_d1 (= n(d1)) is the normal density function
'and dbSV (=sigma) is the stock volatility
 
 
'MsgBox ("Your dbNDF is " & dbNDF) ' debugging line
 
End Function
________________________________________________
 
Sub CulculationDelta1Function()
 
 
dbDelta1 = Round((Log(curCSP / curSP) + (dbIr + 0.5 * dbSV ^ 2) * dbTM) / dbSV * Sqr(dbTM), 6)
 
 
'MsgBox ("Your dbDelta1 is " & dbDelta1) ' debugging line
 
End Sub
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.01.2012, 19:51
Ответы с готовыми решениями:

CopyFile не хочет работать с аргументами команды
Есть простая программка, которая просто должна копировать файлик, но когда я вручную прописываю имя...

Функция с двумя аргументами. Второй - по умолчанию = первому
Привет! Есть какой - то способ задать в объявление функции второй аргумент, равный по умолчанию...

Ноутбук не хочет работать с двумя ОЗУ
Здравствуйте многоуважаемые форумчане, у меня возникла такая проблема с ноутбуком Acer Aspire 5542...

VBA excel 2007 и Power point (Please help!)
Уважаемые форумчане, подскажите пожалуйста, в чем ошибка! Задача: при нажатии кнопки на листе...

1
15145 / 6418 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
31.01.2012, 22:20 2
VBA не допускает такого написания: CulculationCumulativeNormalFunction (dbDelta1, dbNDFd1)
Если Вам не нужно возвращаемое функцией значение, т.е. Вы вызываете ее как подпрограмму, то пишите
Visual Basic
1
2
3
CulculationCumulativeNormalFunction dbDelta1, dbNDFd1 'без скобок
'или
Call CulculationCumulativeNormalFunction (dbDelta1, dbNDFd1)
Но т.к. функция не меняет свои аргументы, такой вызов не имеет смысла. Возвращаемое значение надо как-то использовать, например
Visual Basic
1
dbDelta1 = CulculationCumulativeNormalFunction (dbDelta1, dbNDFd1)
1
31.01.2012, 22:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.01.2012, 22:20
Помогаю со студенческими работами здесь

Функция ну никак не хочет работать
Вот функция void OPEN_USER_COMMAND(System::String^ PolzCom) { System::String^...

Не хочет работать функция rename
Необходимо переименовать файл, если он находится в самой папке проекта, то есть ну нужно указывать...

VBA Excel 2007. Ошибка в методе ListFillRange
Здравствуйте, самый обычный макрос формирования таблицы из базы данных в Excel 2007. Разбираюсь в...

VBA Excel 2007, Работа с символьными данными
помогите пожалуйста решить: - Подсчитать, сколько в строке слов, содержащих буквосочетание 'мн'....

Обработка в Excel 2007 табличных данных с использованием макросов на VBA
Помоооогите пожалуйста, братцы, сделать лабораторку, ОЧЕНЬ СРОЧНО!!! Буду безумно благодарен, если...

Функция rename в связке с foreach не хочет правильно работать
У меня есть директория, там есть файлы такого форматирования "название1.2017-01-02.txt", все эти...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru