2014-08-29 136 views
-1

我想通過調用我的VBA代碼中的函數爲變量賦值。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

你在函數本身中用「with」表示什麼?你可以發佈'readSolOverviewTable'內容嗎? (至少相關部分) – smagnan 2014-08-29 07:03:04

+0

請向我們展示'readSolOverviewTable'代碼# – 2014-08-29 07:04:46

+3

您可能需要檢查[THIS ANSWER](http://stackoverflow.com/questions/2781689/how-to-return-from-a- vba函數) – 2014-08-29 07:05:38

回答

2

問題很簡單 - 你沒有返回一個值。爲了從VBA中的函數返回一個值,你需要在代碼末尾說出function name = value(就像說「return xxx」)。由於你沒有從函數返回一個值,所以它默認爲0.