我试图通过调用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
现在我已经解决了这个问题(我希望),这是什么原因以及为什么这种奇怪的语法?
答案 0 :(得分:2)
问题很简单 - 您没有返回值。为了从VBA中的函数返回值,您需要在代码末尾说function name = value
(就像说“返回xxx”)。由于您没有从函数返回值,因此默认为0.