【问题标题】:VBA function returns wrong value [duplicate]VBA函数返回错误值[重复]
【发布时间】:2014-10-23 03:47:55
【问题描述】:

我正在尝试通过在我的 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

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

【问题讨论】:

  • with in the function itself 是什么意思?你能发布readSolOverviewTable的内容吗? (至少是相关部分)
  • 请向我们展示readSolOverviewTable的代码
  • 您可能需要检查THIS ANSWER
  • @smagnan 我刚刚检查了一些帖子..并通过在结束函数语句之前再添加一行来使其工作。用详细信息更新了问题。
  • 谢谢@mehow 是的,我得到了答案。我是 VBA 新手,来自 java 世界,VBA 语法有点让我失望。

标签: vba function excel


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 2015-01-06
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多