VBA循环通过动态生成的字符串数组(类型不匹配)

时间:2017-06-26 18:35:41

标签: arrays vba loops type-mismatch

我正在使用此函数生成一个字符串数组,它正在输出一个字符串数组:

Dim tmp As String
Dim arr() As String

If Not Selection Is Nothing Then
   For Each cell In Selection
      If (cell <> "") And (InStr(tmp, cell) = 0) Then
        tmp = tmp & cell & "|"
      End If
   Next cell
End If

If Len(tmp) > 0 Then tmp = Left(tmp, Len(tmp) - 1)

Debug.Print tmp
arr = Split(tmp, "|")

我遇到的问题是我正在尝试使用生成的数组循环遍历我在电子表格中搜索的字符串集。我需要动态生成这个数组。我知道如何遍历数组的唯一方法是使用变量并编写如下代码:

'Create IRAF array
Dim test_col As Range
Set test_col = Range(CStr(testSearch.Offset(1, 0).Address), Range(CStr(testSearch.Address)).End(xlDown))
test_col.Select
test_arr = create_array(test_col)
Debug.Print test_arr

'Loop for the Test Cycles
Dim iGen As Variant
Dim iCurrent As Variant
Dim i As Integer
iGen = test_arr
For Each iCurrent In iGen
    Set Search = Cells.Find(What:=iCurrent, _
        After:=Cells(1, 1), _
        LookIn:=xlValues, _
        LookAt:=xlPart, _
        SearchOrder:=xlByRows, _
        SearchDirection:=xlNext, _
        MatchCase:=False, _
        SearchFormat:=False)
    If Not Search Is Nothing Then...

我意识到我遇到的问题是数组是作为字符串数组从函数返回的,然后我试图将Variant类型设置为等于字符串数组。有没有办法将字符串数组转换为变量或以其他方式为动态生成的字符串数组创建循环?我试图解决的问题是我需要动态生成字符串数组,因为字符串搜索条件可能会逐个文件地更改。

1 个答案:

答案 0 :(得分:0)

听起来你的主要挑战是如何遍历你的字符串数组。以下代码显示了如何执行此操作:

   For i = LBound(test_arr) To UBound(test_arr)
      'your logic here
      'you would refer to an element like this test_arr(i)
   Next