如果二维数组中的值存在于另一个二维数组函数中

我需要一个函数来帮助我确定二维数组中的值是否存在于另一个二维数组中。 我试图重构一个在这个问题上工作的以前的函数。 我遇到了这样的错误,如Byref argument type mismatch (其中我添加了ByVal语句),以及当前我正在面向function call on left-hand side of assignment错误。

 Public aLogic As Variant Public Field_List(1 To 70, 1 To 10) As String, Field_No_of_Rows As Long Sub Implement_Mapping() Dim aMapRow As Integer, aMapCol As Integer For aMapRow = LBound(aLogic, 1) To UBound(aLogic, 1) For aMapCol = LBound(aLogic, 2) To UBound(aLogic, 2) If IsInArrayByVal(aLogic(aMapRow, aMapCol), Field_List) = True Then Debug.Print aLogic(aMapRow, aMapCol) 'For Each Break In ObjLSL 'Next End If Next aMapCol Next aMapRow End Sub Function IsInArrayByVal(ByVal stringToBeFound As String, ByVal arr As Variant) As Boolean IsInArray = Not IsError(Application.Match(stringToBeFound, Application.Index(arr, 0, 1), 0)) 

假设代码的其余部分工作,您必须更正以下内容:

 Function IsInArrayByVal(ByVal stringToBeFound As String, ByVal arr As Variant) As Boolean IsInArray = Not IsError(Application.Match(stringToBeFound, Application.Index(arr, 0, 1), 0)) End Function 

至:

 Function IsInArrayByVal(ByVal stringToBeFound As String, ByVal arr As Variant) As Boolean IsInArrayByVal = Not IsError(Application.Match(stringToBeFound, Application.Index(arr, 0, 1), 0)) End Function 

你可能在你的代码的其他地方有一个IsInArray函数,导致你提到的错误信息,即function call on left-hand side of assignment

我没有testing的猜测是Field_List(1 To 70, 1 To 10) As String应该是Field_List(1 To 70, 1 To 10) As Integer 。 将数字types与非数字types进行比较时,您将得到types不匹配。

另一个奇怪的是你有

 Function IsInArrayByVal(ByVal stringToBeFound As String, ByVal arr As Variant) As Boolean IsInArray = Not IsError(Application.Match(stringToBeFound, Application.Index(arr, 0, 1), 0)) 

没有End Function 。 也许你忘了复制到这个post,但如果不是,我相当肯定会给你的问题。

所以它应该是:

 Function IsInArrayByVal(ByVal stringToBeFound As String, ByVal arr As Variant) As Boolean IsInArrayByVal = Not IsError(Application.Match(stringToBeFound, Application.Index(arr, 0, 1), 0)) End Function