2015-04-11 1 views
0

Мне нужно сделать функцию, которая находит Косинус в градусах. Я нахожусь на Mac-OS Excel 2011Как создать функцию Cosd с VBA для Excel?

Function cosd(d) 
    deg = (d * 3.14159265358979)/180  
    cosd = WorksheetFunction.Cos(deg) 
End Function 

Это все еще не работает.

+0

Возможный дубликат [VBA sin() и cos() problem] (http://stackoverflow.com/questions/21971654/vba-sin-and-cos-trouble) – eirikdaude

+0

В более поздних версиях Excel есть встроенный -in 'WorksheetFunction.Cosd()' – ja72

+0

Если есть родная функция рабочего листа с тем же именем, что и ваша функция, это, вероятно, также объяснит ошибку '# NAME'. В противном случае я не уверен, что может быть причиной этого. Может быть, неправильный вид данных в аргументе? – eirikdaude

ответ

2

Вы действительно близки к единственной проблеме с вашей функцией (ну, кроме того, что не объявление ваших переменных - это плохая практика) заключается в том, что Cos не является функцией VBA. Измените вашу функцию на

Function cosd(d As Double) As Double 
    cosd = Application.WorksheetFunction.Cos((d * Application.WorksheetFunction.Pi)/180#) 
End Function 

и он должен работать нормально.

+0

В нем говорится «ошибка: ожидаемый конец утверждения». Я потянул все мои волосы за это ?! – Waleed

+0

Упс, забыли добавить в скобки в начале заявления, исправлено сейчас @ WaleedKAl-Shaikhli – eirikdaude

+0

Почему бы не использовать функцию bult-in 'Cos()', определенную в VBA? – ja72