Формат функции Excel

Я совершенно новичок в написании функций в Excel (в основном это был код подпрограмм).

Мне было интересно, что означает следующее объявление функции?

public function function_name(args as string) as string

Я все понимаю до второго случая as string, Это что-то новое для меня, и я не уверен, насколько это отличается от простого объявления:

public function function_name(args as string)

4 ответа

Решение

public function function_name(args as string) as string

  • public - это определение доступа. общедоступные средства, доступные через проект VBA

  • функция означает, что это функция (тоесть она должна что-то возвращать)

  • имя_функции - это имя функции (не может начинаться с 1 или подчеркивания)

  • args - это локальное имя параметра, которое будет использоваться в теле функции

  • args as String указывает, что функция ожидает args быть из String тип

  • ...) Поскольку String указывает, что функция будет возвращать String тип данных. Поэтому, если у вас есть размерная переменная типа String, вы сможете присвоить ей значение с помощью функции.


стандартное (по умолчанию) объявление без явного указания возвращаемого типа возвращает Variant

Это то же самое, что объявить переменную без указания ее типа.

Dim aVariable

с эквивалентно

Dim aVariable as Variant

так как Variant это тип по умолчанию.

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

Это как-то похоже на Range("A1").Value а также Range("A1") - оба одинаковы, потому что .Value это свойство по умолчанию Range объект.

Что происходит сейчас, это то, что компилятор оценивает, какое значение входит в aVariable под капотом и назначает этот тип переменной.

Допустим, у вас есть

Sub Main()

    Dim varVariable
    Dim strVariable As String

    varVariable = "hello world"
    strVariable = "hello world"

    MsgBox "varVariable is of " & TypeName(varVariable) & " type" & vbCrLf & _
           "strVariable is of " & TypeName(strVariable) & " type"

End Sub

Как я уже сказал, оба String тип

введите описание изображения здесь


Не уверен, насколько вы знакомы, например, с C#, но в C# вы объявляете тип возврата функции сразу после модификатора доступа, т.е.

public string myFunction(string args)

так в VB/VBA второй as String равен первому string (сразу после публики) в C#

в C# вы бы использовали return Ключевое слово в то время как в VBA вы заменяете return Ключевое слово с именем функции. Поэтому в VBA очень простой образец

Public Function ReturnFirst3Characters(args As String) As String
    ReturnFirst3Characters = IIf(Len(args) > 2, Left(args, 3), args)
End Function

Функция возвращает первые 3 символа строки, которую вы ей передали (если строка длиннее 3 символов, если нет, она возвращает строку, которую вы передали функции)

С http://www.cpearson.com/excel/writingfunctionsinvba.aspx:

Function RectangleArea(Height As Double, Width As Double) As Double
    RectangleArea = Height * Width
End Function

Эта функция принимает в качестве входных данных две переменные типа Double, Height и Width, и возвращает Double в качестве результата.

Второе "как" указывает тип, который возвращает функция. Эта функция возвращает строку, вы можете вернуть значение внутри функции следующим образом:

function_name="Value"

Если вы знакомы с Procedure с, думать о Function как Procedure это возвращает значение. as String как конец указывает, какой тип значения возвращается.

Чтобы вернуть значение, используйте имя функции, как если бы оно было переменной:

Public Function ConvertToUpperCase(str as string) as string
    ConvertToUpperCase = UCase(str)
End Function
Другие вопросы по тегам