当以行存在上述匹配上的电子表格数据的数据1D-阵列匹配符

问题描述 投票:0回答:1

我有一个窗体,将匹配在“数据库”表从两个文本框,在特定的列中的数据串,如果找到匹配它复制该行另一片一个命令按钮。

代码工作和匹配数据从所述片材时所述匹配的数据是“第一”在数据库中。含义,匹配数据可以是行1,2,3,10,但只要它之前不存在任何数据匹配的工作原理。

问题:当在上述所匹配的标准行存在的数据匹配中断。我得到的假匹配的回报时,它应该为True。当我移动数据是“第一”的数据它的工作原理。

截图来帮助说明:

匹配条件 enter image description here

- 作品 - enter image description here

返回在当地人enter image description here

--Breaks--

匹配失败enter image description here在当地人返回False enter image description here

我使用的是数组行了我正在寻找的列索引,所以我没有对数据进行排序。但我曾尝试和排序,并发生了同样的问题。我也确信在我寻找的范围内的所有单元格的格式是“常规”的,只是在情况。我不是“看到”它可能是什么吗?任何帮助将不胜感激。

Private Sub run_check_but_Click()
    Const COL_STATUS As Long = 4
    Dim wsData As Worksheet, wsSyn As Worksheet
    Dim tRow As Long, i As Long
    Dim tempList(1 To 9) As String
    Dim match As Boolean
    Dim rCol As Range, c As Range

    Set wsData = Sheets("Database")
    Set rCol = wsData.Range(wsData.Cells(3, 4), wsData.Cells(100, 4))

    'Set TargetSheet and clear the previous contents
    Set wsSyn = Sheets("Syn_Calc")
    wsSyn.Range("A3:G" & wsSyn.Range("A" & Rows.count).End(xlUp).row + 1).ClearContents
    tRow = 3

    'Set an array of strings, based on the index matching the column to search for each
    tempList(5) = curbase_box.Text      'Column "E" (5)
    tempList(6) = dirquote_box.Text     'Column "F" (6)

    For Each c In rCol.Cells
        With c.EntireRow
            If .Cells(COL_STATUS).Value = "Open" Then

                match = False

                For i = LBound(tempList) To UBound(tempList)
                    If tempList(i) <> "" Then
                        match = (.Cells(i).Text = tempList(i))
                        If Not match Then Exit For
                    End If
                Next i

                If match Then
                    'copy values from E-K
                    wsSyn.Cells(tRow, 1).Resize(1, 7).Value = _
                         .Cells(5).Resize(1, 7).Value
                    tRow = tRow + 1
                End If

            End If 'open
        End With
    Next c
End Sub 

预期结果:当我点击命令按钮,它会通过搜索栏来匹配字符串文本框无论身在何处的数据列中,比赛行复制到另一个工作表。

注:该代码将只搜索匹配,如果第4列(“d”)具有“开放”的状态,你在代码中看到的。我证实了这工作正常。

arrays excel vba
1个回答
0
投票

我添加了一些调试线和另一个循环。看一看!还要检查在立即窗口(Ctrl G)的输出!

在即时窗口输出示例:

rCol.Address: $D$2:$D$9

start in $D$6
search for CHF
--- search in $E$6
--- search in $F$6
--- search in $G$6
--- search in $H$6
search for 12342
--- search in $E$6
--- search in $F$6
--- search in $G$6
--- search in $H$6

start in $D$7
search for CHF
--- search in $E$7
--- search in $F$7
--- search in $G$7
--- search in $H$7
==============> Match in $H$7

...
...
...

数据库 enter image description here

Syn_Kalk kazxsopoi

enter image description here
© www.soinside.com 2019 - 2024. All rights reserved.