函数返回总是布尔值False

Wak*_*nka 2 excel vba excel-vba

我有以下功能:

Function IsInArray(ByVal needle As String, haystack() As String) As Boolean
  Dim element As Variant
  For Each element In haystack
    If element = needle Then
      IsInArray = True
    End If
  Next element
  IsInArray = False
End Function
Run Code Online (Sandbox Code Playgroud)

我通过这个子程序调用的是:

Sub CallIsInArray()
  Dim haystack(1 To 4) As String
  haystack(1) = "T1"
  haystack(2) = "T2"
  haystack(3) = "T3"
  haystack(4) = "T4"

  Dim needle As String
  needle = "T1"  ' Should return True but instead of it return False
  ' needle = "T1x" ' Return False as expected

  Dim result As Boolean
  result = IsInArray(needle, haystack)
  MsgBox result
End Sub
Run Code Online (Sandbox Code Playgroud)

问题是IsInArray总是回归False,为什么?

ago*_*old 7

Exit Function当你找到时,你忘了返回()needle.

Function IsInArray(ByVal needle As String, haystack() As String) As Boolean
  Dim element As Variant
  For Each element In haystack
    If element = needle Then
      IsInArray = True
      Exit Function
    End If
  Next element
  IsInArray = False
End Function
Run Code Online (Sandbox Code Playgroud)