Новости:

К первому сообщению темы должен быть прикреплен файл примера в формате xls*.
Приложив пример, Вы избавите себя и других от вопросов типа "А какой критерий?", "А куда выводить результат?", "А сколько строк?" и все тех же просьб выложить файл. Рисовать за Вас Ваши же таблички с заданиями, а затем и решение к ним, никто желанием не горит. Да и, как показывает практика, в большинстве случаев без файла решения не найти.

Главное меню

Функция в VBA

Автор bambinio, 02.12.2009, 10:16

« назад - далее »

bambinio

Доброе утро всем!
У меня такая задачка по информатики, нужно создать собстенную функцию в екселе через VBA. Функция имеет следующий вид F(X)=корень квадратный с разности (Х^3-Y^3).
Как ее написать на VBA?

GWolf

Добрый день! Если без запроса у пользователя значений параметров, то так:

Sub start()
    A = 25
    B = 8
   
    rez = fnkT(A, B)
    MsgBox rez, vbInformation + vbOKOnly, "Результат:"
End Sub

Function fnkT(X, Y)
    'F(X)=корень квадратный с разности (Х^3-Y^3).
    fnkT = Sqr(X ^ 3 - Y ^ 3)
End Function

Путей к вершине - множество. Этот один из многих!

bambinio

а с проверкой допустимых значений аргумента?
в методичке для функции Y=корень Х фунция в VBA прописывается
Function F(X)
If X<0 Then ' Анализируется значение аргумента
F="Недопустимое значение аргумента"
Exit Function ' Возвращение в процедуру, которая вызвала функцию.
Else
F=Sgl(X)  ' Возвращение результата вычисления
End If
End Function


GWolf

Цитата: bambinio от 02.12.2009, 21:39
а с проверкой допустимых значений аргумента?
в методичке для функции Y=корень Х фунция в VBA прописывается
Function F(X)
If X<0 Then ' Анализируется значение аргумента
F="Недопустимое значение аргумента"
Exit Function ' Возвращение в процедуру, которая вызвала функцию.
Else
F=Sgl(X)  ' Возвращение результата вычисления
End If
End Function

Пожалуйста:

Sub start()
    Dim rez as String

    A = 25
    B = 8
   
    rez = fnkT(A, B)

    MsgBox rez, vbInformation + vbOKOnly, "Результат:"
End Sub

Function fnkT(X, Y) As String
    'F(X)=корень квадратный с разности (Х^3-Y^3).
    if X<0 Then
        fnkT = "Недопустимое значение аргумента"
    Else
        fnkT = Sqr(X ^ 3 - Y ^ 3)
    End If
End Function


Хотя, не проще ли проверку входных параметров сделать до "прогона" через функцию?  ;) Ну, это для того, что бы функция не возвращала строку, а число ...
Путей к вершине - множество. Этот один из многих!

bambinio

Это получается проверяет же только Х, а так чтобы и Y???

GWolf

Цитата: bambinio от 03.12.2009, 12:47
Это получается проверяет же только Х, а так чтобы и Y???

Пожалуйста:

Sub start()
    Dim rez as String

    A = 25
    B = 8
   
    rez = fnkT(A, B)

    MsgBox rez, vbInformation + vbOKOnly, "Результат:"
End Sub

Function fnkT(X, Y) As String
    'F(X)=[url=http://msexcel.ru/content/view/14/2/]корень[/url] квадратный с разности (Х^3-Y^3).
    if X<0 or Y<0 Then
        fnkT = "Недопустимое значение аргумента"
    Else
        fnkT = Sqr(X ^ 3 - Y ^ 3)
    End If
End Function
Путей к вершине - множество. Этот один из многих!

iron priest