我已经写了一个脚本,可以很好地进行精确匹配,但是我想重写它,以允许用户只键入其中一个条件的一部分。 userform
仍应识别出它在另一张纸上来自哪一行,并用相应的信息填充单元格。该行必须同时包含txtsearch
和txtname
才能找到正确的行。
txtsearch
的样本值:Instuctor,Mentor等。
txtname
的样本值:Borkowski,Villarreal等
这就是我现在拥有的:
Private Sub CommandButton1_Click()
Dim ws As Worksheet, cel As Range
Set ws = Sheets("The Goods")
For Each cel In ws.Cells(2, 2).Resize(ws.Cells(Rows.Count, 2).End(xlUp).Row).Cells
If cel.Value = Me.txtname.Value And cel.Offset(, 2).Value = Me.txtsearch.Value Then
currentrow = cel.Row
Me.txt1.Value = cel.Offset(, 3).Value
Me.txt2.Value = cel.Offset(, 1).Value
Me.txt3.Value = cel.Offset(, 4).Value
Me.txt4.Value = cel.Offset(, 5).Value
Me.txt5.Value = cel.Offset(, 6).Value
Me.txt6.Value = cel.Offset(, 7).Value
Me.txt7.Value = cel.Offset(, 8).Value
Me.txt8.Value = cel.Offset(, 9).Value
Me.txt9.Value = cel.Offset(, 10).Value
Me.txt10.Value = cel.Offset(, 11).Value
Me.txt11.Value = cel.Offset(, 12).Value
End If
Next cel
End Sub
答案 0 :(得分:1)
如果您的意思是“仅一部分”,则需要instr
函数。见下文...
If InStr(1, cel.Value, Me.txtname.Value, vbTextCompare) > 0 And _
InStr(1, cel.Offset(, 2).Value, Me.txtsearch.Value) > 0 Then
如果您只想向左指,那将起作用:
If Left(cel.Value, Len(Me.txtname.Value)) = Me.txtname.Value And _
Left(cel.Offset(, 2).Value, Len(Me.txtname.Value)) = Me.txtname.Value Then