2013-04-22 30 views
2

我有两个数组,我试图提取它们中的公共值,函数findUniques应该是返回字符串(它们是名字)连接在一起并用逗号分隔。我想我很接近,但我找不到什么不对。我得到一个错误在第10行赋值左侧的函数调用必须返回Variant或Object,在两个数组中找到公共值

Function findUniques(astrArray1() As String, astrArray2() As String) As String 


Dim blnMP5 As Boolean 
blnMP5 = False 

Dim counter1 As Long 
Dim counter2 As Long 


For counter1 = LBound(astrArray1) To UBound(astrArray1) 
    For counter2 = LBound(astrArray1) To UBound(astrArray2) 
     If astrArray1(counter1) = astrArray2(counter2) Then 
      blnMP5 = False 
     If blnMP5 = True Then 
    findUniques() = findUniques & "," & "astrArray1()" 

End If 
End If 

Next counter2 
Next counter1 

End Function 

回答

0

这里来声明一个变量来保存您正在构建

昏暗tempString作为字符串

字符串,并在第10行添加此 tempString = tempString & “” & astrArray1(计数器1)

最后 findUniques = tempString 结束功能

+0

完美!感谢您的帮助 – user2217895 2013-04-22 21:48:57

+0

Kenneth在回答中可能确定了问题的原因。虽然目前的答案解决了OP的问题,但可能是由于删除了导致错误的行。本文旨在说明使用辅助字符串变量来解决问题并不是强制性的。 – 2017-01-04 23:06:01

2

你的错误是在这一行:

findUniques() = findUniques & "," & "astrArray1()" 

你试图分配一个值的函数调用,这没有任何意义。

你应该在你的函数开始声明一个变量并不断增加一个,并最终返回它:

Function findUniques(astrArray1() As String, astrArray2() As String) As String 

    Dim blnMP5 As Boolean 
    blnMP5 = False 

    Dim counter1 As Long 
    Dim counter2 As Long 

    Dim uniquesString as String = "" 

    For counter1 = LBound(astrArray1) To UBound(astrArray1) 
     For counter2 = LBound(astrArray1) To UBound(astrArray2) 
      If astrArray1(counter1) = astrArray2(counter2) Then 
       blnMP5 = False 
       If blnMP5 = True Then 
        uniquesString = uniquesString & "," & "astrArray1()" 
       End If 
      End If 
     Next counter2 
    Next counter1 
End Function 

虽然这将解决您的编译器错误,你需要修改你的函数,因为这不是很合乎逻辑。无论如何,尝试一下,如果您有任何其他问题,您可以再次

相关问题