ParamArray中的几个数组

时间:2015-02-20 14:48:46

标签: arrays vba

我需要一个函数,它在一个字符串中搜索不同数组中的某些字符串。

让我们说,我有“建筑”这个词和两个列表(=两个数组): 房子,车库,塔,城堡,建筑物 2.桌子,床,花,图片

因此,在这种情况下,列表1包含相关单词,因此应该响应。

到目前为止我的代码(一维数组):

Function cbsMatchKeywords(strKeyword As String, ParamArray strList() As Variant) As String

    Dim i As Long

    For i = LBound(strList,1) + 1 To UBound(strList,1)
        If InStr(strKeyword, strList(i,1)) > 0 Then
            cbsMatchKeywords = cbsMatchKeywords & strList(i,1)
        End If
    Next i

End Function

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

这对你有用

Function cbsMatchKeywords(strKeyword As String, ParamArray strList() As Variant) As String

    Dim i As Long, j As Long
    For j = LBound(strList, 2) To UBound(strList, 2)
        For i = LBound(strList, 1) + 1 To UBound(strList, 1)
            If InStr(strKeyword, strList(i, j)) > 0 Then
                cbsMatchKeywords = cbsMatchKeywords & strList(i, j)
            End If
        Next i
    Next j

End Function

答案 1 :(得分:0)

Option Explicit

Public Sub Main()
    Dim arr1 As Variant
    arr1 = Array("house", "garage", "tower", "castle", "building")

    Dim arr2 As Variant
    arr2 = Array("table", "bed", "flowers", "picture")

    Const keyword As String = "building"

    Dim result As String
    result = cbsMatchKeywords(keyword, arr1, arr2)

    Debug.Print "Result is : '" & result & "'"
    ' Prints:
    ' Result is : 'building'
End Sub

Function cbsMatchKeywords( _
    strKeyword As String, _
    ParamArray strList() As Variant) As String

    Dim i As Integer
    Dim j As Integer
    Dim arr As Variant

    For i = LBound(strList) To UBound(strList)

        arr = strList(i)
        If Not IsArray(arr) Then _
            GoTo continue

        For j = LBound(arr) To UBound(arr)
            If InStr(strKeyword, arr(j)) > 0 Then
                cbsMatchKeywords = cbsMatchKeywords & arr(j)
            End If
        Next j

continue:
    Next i

End Function
相关问题