Зачем объявлять тип функции? - PullRequest
0 голосов
/ 11 мая 2018

Извините, если об этом спросили, но серьезно ничего не могу найти, поэтому также буду признателен за то, как искать этот материал.

Итак, мой вопрос: какой смысл объявлять тип функции в целом? Например. здесь «как двойной»

Function myFunction(ByVal j As Integer) As Double
    Return 3.87 * j
End Function

Для обычной переменной она имеет массу преимуществ, например, меньше памяти, легче увидеть опечатки, но почему здесь?

Edit: так, это хорошо, потому что мы можем избежать ошибок, таких как возвращение значений, отличных от ожидаемых.

Ответы [ 3 ]

0 голосов
/ 11 мая 2018

Поскольку я не могу пометить комментарий как ответ, позвольте мне процитировать:
@ Джон Коулман
Мое мнение таково, что было бы хорошо объявить ваши возвращаемые типы, потому что это увеличивает вероятность того, что компилятор будет жаловаться, когда вы делаете что-то, что действительно не имеет смысла.

0 голосов
/ 11 мая 2018

Excel VBA отличается от других языков программирования тем, что он ориентирован на конкретное приложение: Excel.

Функции полезны в Excel VBA в первую очередь потому, что их можно вводить непосредственно в ячейку на конце листа.пользователь.Пользовательские функции обеспечивают почти бесконечную гибкость.Значение, которое пользовательская функция печатает в Excel, форматируется на основе типа функции - и в программе, которая занимается визуализацией данных, форматирование - это огромная часть.

Например, попробуйте поместить эти четыре функции впустой модуль рабочего листа:

Function myInt(x, y) As Integer
myInt = x / y
End Function

Function myDouble(x, y) As Double
myDouble = x / y
End Function

Function myString(x, y) As String
myString = x / y
End Function

Function myVariant(x, y)
myVariant = x / y
End Function

Затем введите каждую из этих функций в отдельную ячейку в книге.Используйте x = 1 и y = 2.

myInt produces "=0"
myDouble produces "=0.5"
myString produces "'0"
myVariant produces "=0.5"

Если вы в порядке с Excel, решающим, как форматировать ваш результат, это ваш выбор, но указание типа предлагает совершенно новый уровень контроля.Например, просто объявив функцию целым числом, вы можете избежать необходимости округлять строку кода.Объявляя функцию строкой, вы можете избежать нескольких строк кода форматирования, пытаясь получить число, которое будет сохранено в виде текста.

0 голосов
/ 11 мая 2018

Функции ВОЗВРАЩАЮТ что-нибудь. Этот тип является типом возврата.

В вашей функции:

Function myFunction(ByVal j As Integer) As Double
    Return 3.87 * j
End Function

Вы возвращаете десятичную дробь, поэтому введите Double, имеет смысл.

Если вы ничего не вернете, вы можете объявить это как Sub.

И, для ясности, ваша функция выдаст ошибку компиляции. В отличие от других языков, в VBA для возврата мы устанавливаем значение имени функции в значение, которое мы хотим вернуть:

Function myFunction(ByVal j As Integer) As Double
    myFunction=3.87 * j
End Function

Теперь мы можем вызвать эту функцию, чтобы получить значение Double, которое она создает:

Sub testSub()
    msgbox("This is the result of the function: " & myFunction(10))
End Sub

, который откроет окно с сообщением «Это результат функции: 38,7»

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