【问题标题】:Return a Boolean value from one function to another function - VBA从一个函数返回一个布尔值到另一个函数 - VBA
【发布时间】:2020-04-11 10:23:29
【问题描述】:

我正在学习 VBA,但无法将布尔值从一个函数返回到另一个函数。我一直在尝试解决其他类似的问题,但我无法解决。

所以,我有这个功能:

Public Function Verifica_Permite_Gas()      
    Dim permit As Boolean       

' Se a torneira permite gasta
    If Permite_GAS Then         
        permit = True           
    Else

' Não permite
        Debug.Print "Erro torneira nao devia conter Gas - Torneira_3 - metodo Permite_GAS"          
        permit = False

    End If

End Function

你应该返回这个函数的值

Public Function Verifica_Gas()      
    Dim permite As Boolean

    permite = listaTorneiraSetor(a).Verifica_Permite_Gas()

End Function

程序可以运行,没有错误,但即使 Permit_GAS = TRUE 也总是返回 false 不明白为什么,谁能帮我解决一下?

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    你需要修改你原来的函数来返回一个值:

    Public Function Verifica_Permite_Gas() As Boolean
        Dim permit As Boolean
    ' Se a torneira permite gasta
        If Permite_GAS Then
            permit = True
        Else
    ' Não permite
            Debug.Print "Erro torneira nao devia conter Gas - Torneira_3 - metodo Permite_GAS"
            permit = False
        End If
        Verifica_Permite_Gas=permit
    End Function
    

    您可以通过在If/Else/End If 块内将Verifica_Permite_Gas 直接设置为True 或False,而无需声明和使用permit

    If Permite_GAS Then
        Verifica_Permite_Gas= True
    Else
        Verifica_Permite_Gas= False
    End If
    

    问候,

    【讨论】:

      【解决方案2】:

      VBA 中的函数有点有趣,因为它们没有像其他一些语言中那样的return 语句。从函数返回值的方法是将值分配给函数的名称。

      所以在Verifica_Permite_Gas 中,你只需要确保在某个时候你有Verifica_Permite_Gas = result

      您可以想象每个Function 都包含一个Dim Verifica_Permite_Gas As ...,您需要在其中写入结果。

      所以只需摆脱 Dim permit As Boolean 而是使用:

      Public Function Verifica_Permite_Gas()
      
      ' Se a torneira permite gasta
      If Permite_GAS Then
      
          Verifica_Permite_Gas = True
      
      Else
          ' Não permite
          Debug.Print "Erro torneira nao devia conter Gas - Torneira_3 - metodo Permite_GAS"
      
          Verifica_Permite_Gas = False
      
      End If
      
      End Function
      

      还记得你声明了permit As Boolean - 你可以对你的函数返回值做同样的事情,所以它是

      Public Function Verifica_Permite_Gas() As Boolean
      

      【讨论】:

        猜你喜欢
        • 2014-07-13
        • 2015-07-16
        • 2021-08-14
        • 2013-03-18
        • 1970-01-01
        • 2021-12-16
        • 2021-01-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多