IIF-Else声明永远不会达到其他条件

时间:2012-04-19 00:25:46

标签: vba if-statement ssrs-2008

我在SQL Reporting Services中使用此自定义代码。问题是它永远不会达到假的条件。如果条件不为真,则函数不会返回“false”。当值为True(打印“X”)时它工作正常,否则我得到#Error。

我正在从文本框中调用该函数:

= IIF(Code.CodeExist(Variables!MyCode.Value) = true, "X", "")


    function CodeExist( ByVal  Codigo As String) as Boolean

    dim i as integer
    dim Centinela as integer

    i = 0

    Centinela = 0 

    for i = 0  To   Report.Parameters!CodeList.Count()
         if  Report.Parameters!CodeList.Value(i) = Codigo Then
               Centinela = 1
               Exit For
         End If
    Next 


    If Centinela = 1 Then
        Return true
    Else
        Return false      // IT NEVERS RETURN FALSE even if Centinela = 0
    End If

    End function

我不知道发生了什么。提前谢谢。

1 个答案:

答案 0 :(得分:5)

VBA没有“退货”声明。要返回您使用的值(例如)

....

  If Centinela = 1 Then     
   CodeExist = True 
  Else     
   CodeExist = False    
  End If  

End Function 

或(更整洁):

  ....
  CodeExist = (Centinela = 1)

End Function