VBA函数返回错误的值

时间:2014-08-29 06:55:06

标签: vba function excel-vba excel

我试图通过调用VBA代码中的函数为变量赋值。

我的子程序体看起来像这样:

Sub testSubroutine()
Dim iVal As Integer
iVal = readSolOverviewTable("TOT_MAPS")
Debug.Print "Function readSolOverviewTable returned: " & iVal
End sub

readSolOverviewTable函数在函数本身中返回正确的值。我通过调试功能代码验证了它。

但似乎子程序代码存在一些问题如下:

iVal = readSolOverviewTable("TOT_MAPS")

始终返回0.

我做错了吗?

Updated:
====================================

我的功能看起来像这样:

Function readSolOverviewTable(searchVal As String) As Integer
    Dim retVal As Integer
    retVal = -99

    ' Do some code and assign value to the variable retVal
    retVal = 100
    Debug.Print "retval is: " & retVal
End Function

正如所料;这正确地将调试输出显示为100 但是,在子程序调用中没有反映出来。

但是将代码改为此可以使一切正常:

Function readSolOverviewTable(searchVal As String) As Integer
    Dim retVal As Integer
    retVal = -99

    ' Do some code and assign value to the variable retVal
    retVal = 100
    Debug.Print "retval is: " & retVal

    readSolOverviewTable = retVal

End Function

现在我已经解决了这个问题(我希望),这是什么原因以及为什么这种奇怪的语法?

1 个答案:

答案 0 :(得分:2)

问题很简单 - 您没有返回值。为了从VBA中的函数返回值,您需要在代码末尾说function name = value(就像说“返回xxx”)。由于您没有从函数返回值,因此默认为0.