我有一个窗体,将匹配在“数据库”表从两个文本框,在特定的列中的数据串,如果找到匹配它复制该行另一片一个命令按钮。
代码工作和匹配数据从所述片材时所述匹配的数据是“第一”在数据库中。含义,匹配数据可以是行1,2,3,10,但只要它之前不存在任何数据匹配的工作原理。
问题:当在上述所匹配的标准行存在的数据匹配中断。我得到的假匹配的回报时,它应该为True。当我移动数据是“第一”的数据它的工作原理。
截图来帮助说明:
--Breaks--
我使用的是数组行了我正在寻找的列索引,所以我没有对数据进行排序。但我曾尝试和排序,并发生了同样的问题。我也确信在我寻找的范围内的所有单元格的格式是“常规”的,只是在情况。我不是“看到”它可能是什么吗?任何帮助将不胜感激。
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”)具有“开放”的状态,你在代码中看到的。我证实了这工作正常。
我添加了一些调试线和另一个循环。看一看!还要检查在立即窗口(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
...
...
...
Syn_Kalk kazxsopoi