2014-08-29 6 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 

; 이 올바르게 디버그 출력을 같이 표시합니다 그러나 서브 루틴 호출 반영하지 않습니다. 이유 및 구문의 왜 이상한 종류의 것입니다, 지금은 문제를 (I 희망) 해결 한 것을

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

'함수와 함께 사용 '이란 무엇을 의미합니까? 'readSolOverviewTable' 콘텐츠를 게시 할 수 있습니까? (최소한 관련 부분) – smagnan

+0

'readSolOverviewTable' 코드를 보여주세요 –

+3

[이 답변] (http://stackoverflow.com/questions/2781689/how-to-return-from-a-)을 체크하고 싶을 수도 있습니다. vba-function) –

답변

2

문제는 간단합니다. 값을 반환하지 않았습니다. VBA의 Function에서 값을 반환하려면 코드 끝에 function name = value ("return xxx"를 말하는 것과 같음)이라고 말해야합니다. 함수에서 값을 반환하지 않았으므로 디폴트 값은 0입니다.

관련 문제