2014-10-01 117 views
0

我有一個表單,您可以在其中介紹產品代碼並返回其描述和價格。我想添加另一個搜索條件,以便能夠通過關鍵字查找產品,並在「說明」列中進行搜索。我不確定「find」函數是否允許執行此操作,或者是否需要使用「vlookup」函數。我在「vlookup」中發現的問題是,我希望能夠在列中繼續搜索其餘的比賽。這是我目前工作的代碼:在Excel中查找功能:按關鍵字搜索

Option Explicit 
Dim Llave As Boolean 
Private Sub BtnBuscar_Click() 
If Not Sheet1.Range("C1:C211").Find(Me.DatoBuscado, LookIn:=xlValues, LookAt:=xlWhole) Is Nothing Then 
If Llave Then 
    Cells.FindNext(After:=ActiveCell).Select 
    Fila.Caption = ActiveCell.Row 
    Dato1.Caption = ActiveCell.Value 
    Dato2.Caption = ActiveCell.Offset(0, 1).Value 
    Dato3.Caption = ActiveCell.Offset(0, 2).Value 
    Dato4.Caption = ActiveCell.Offset(0, 4).Value 

Else 
Sheet1.Range("C1:C211").Find(Me.DatoBuscado, LookIn:=xlValues, LookAt:=xlWhole).Select 
Fila.Caption = Sheet1.Range("C:C").Find(Me.DatoBuscado, LookIn:=xlValues, LookAt:=xlWhole).Row 
Dato1.Caption = Sheet1.Range("C:C").Find(Me.DatoBuscado, LookIn:=xlValues, LookAt:=xlWhole).Value 
Dato2.Caption = Sheet1.Range("C:C").Find(Me.DatoBuscado, LookIn:=xlValues, LookAt:=xlWhole).Offset(0, 1).Value 
Dato3.Caption = Sheet1.Range("C:C").Find(Me.DatoBuscado, LookIn:=xlValues, LookAt:=xlWhole).Offset(0, 2).Value 
Dato4.Caption = Sheet1.Range("C:C").Find(Me.DatoBuscado, LookIn:=xlValues, LookAt:=xlWhole).Offset(0, 4).Value 
Llave = True 
End If 

Else 
    Dato1.Caption = " " 
    Dato2.Caption = " " 
    Dato3.Caption = " " 
    Dato4.Caption = " " 
    Fila.Caption = " " 
    MsgBox "Dato Inexistente", 64, "" 
End If 
End Sub 



Private Sub Dato1_Click() 

End Sub 

Private Sub Dato3_Click() 

End Sub 

Private Sub Fila_Click() 

End Sub 

Private Sub UserForm_Initialize() 
Llave = False 
End Sub 

所以這是一個搜索表單(用戶窗體),我點擊的工作表(shee1)上的按鈕時,彈出。

非常感謝!

納塔利婭。

回答

0

我建議在DO UNTIL循環中使用Find,直到find返回的範圍爲空並使用該循環來填充列表框。然後用戶可以選擇想要的匹配。

+0

但我認爲查找功能需要輸入您正在尋找的確切字符串,所以我想在字符串內尋找關鍵字。這可能通過使用查找?謝謝:) – 2014-10-01 14:13:26

+0

您可以設置查找以搜索整個或部分字符串。使用參數'LookAt:= xlPart'。 – 2014-10-01 14:15:22

+0

非常感謝! :d – 2014-10-01 14:26:22