为什么要声明函数的类型?

时间:2018-05-11 20:22:22

标签: excel-vba vba excel

很抱歉,如果有人问过,但是认真找不到任何东西,那么也会对如何搜索这些内容表示赞赏。

所以我的问题是:一般来说声明函数类型有什么意义?例如。这里'为双倍'

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

对于一个普通变量,它有很多好处,比如更少的内存,更容易看到错别字,但为什么在这里?

编辑:所以,这很好,因为我们可以避免错误,比如它返回一个比预期更多的值。

3 个答案:

答案 0 :(得分:1)

功能返回一些东西。该类型是退货的类型。

在你的功能中:

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”

答案 1 :(得分:0)

由于我无法在评论中标出答案,让我引述一下:
@John Coleman
我的观点是,声明你的返回类型是一件好事,因为它会增加编译器在你做一些真正没有意义的事情时会抱怨的可能性。

答案 2 :(得分:-1)

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决定如何格式化结果感到满意,那么这是您的选择,但指定类型可提供全新的控制级别。例如,通过简单地将函数声明为整数,可以避免必须将一行代码用于舍入。通过将函数声明为字符串,您可以避免使用多行格式代码来尝试将数字保存为文本。