2017-07-06 74 views
0
Private Sub Search_Click() 
    On Error GoTo MyErrorHandler: 

Dim PartNumber As String 
Dim det As String 

PartNumber = PartNumberIN.Text ' take part input from textbox 

det = "Part Number: " & Application.WorksheetFunction.VLookup(PartNumber, Application.WorksheetFunction.Offset(Table1, 0, 2), 3, False) 
det = det & vbNewLine & "Part Description: " & Application.WorksheetFunction.VLookup(PartNumber, Application.WorksheetFunction.Offset(Table1, 0, 4), 5, False) 
det = det & vbNewLine & "CV or VA: " & Application.WorksheetFunction.VLookup(PartNumber, Application.WorksheetFunction.Offset(Table1, 0, 1), 2, False) 
det = det & vbNewLine & "Direct Ship?: " & Application.WorksheetFunction.VLookup(PartNumber, Application.WorksheetFunction.Offset(Table1, 0, 3), 4, False) 
det = det & vbNewLine & "Storage Container: " & Application.WorksheetFunction.VLookup(PartNumber, Application.WorksheetFunction.Offset(Table1, 0, 6), 7, False) 
det = det & vbNewLine & "SAP Location: " & Application.WorksheetFunction.VLookup(PartNumber, Application.WorksheetFunction.Offset(Table1, 0, 13), 14, False) 
det = det & vbNewLine & "Physical Location: " & Application.WorksheetFunction.VLookup(PartNumber, Application.WorksheetFunction.Offset(Table1, 0, 14), 15, False) 
MsgBox "Part Details : " & vbNewLine & det 
Exit Sub 



MyErrorHandler: 
If Err.Number = 1004 Then 
    MsgBox "Part not present in table." 
ElseIf Err.Number = 13 Then 
    MsgBox "You have entered an invalid value" 
ElseIf Err.Number = 429 Then 
    MsgBox "You're toast" 
End If 

消息框應顯示: 型號:(DATA拉動) CV或VA: 「」 直接船: 「」錯誤拉宏

等向前。

數據是從單獨的工作表上拉出的,而不是按鈕。 該按鈕只是打開用戶窗體。

尋求幫助。該表用作範圍的原因是該數據將定期更新,並且命名的動態範圍不起作用。

+0

編碼塊未能正確上傳,我的道歉。 – Zipoyt

+0

定義了「Table1」的位置? –

回答

0

有點簡單:我不會按照你的膠印使用在這裏,所以你可能需要調整一些列號...

Private Sub Search_Click() 

    Dim PartNumber As String 
    Dim det As String, m, rng 

    'get the table's data range 
    Set rng = ThisWorkbook.Sheets("Sheet1").ListObjects("table1").DataBodyRange 
    'Debug.Print rng.Address 
    PartNumber = PartNumberIN.Text ' take part input from textbox 

    'locate the row if there's a match in the first column 
    m = Application.Match(PartNumber, rng.Columns(1), 0) 
    If Not IsError(m) Then 
     'got a match, so construct the message 
     With rng.Rows(m) 
      det = "Part Number: " & PartNumber 
      det = det & vbNewLine & .Cells(5).Value 
      'etc... 
      MsgBox "Part Details : " & vbNewLine & det 
     End With 
    Else 
     'no match 
     MsgBox "Part not present in table." 
    End If 

End Sub 
+0

非常感謝! – Zipoyt