2017-07-06 1 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 

メッセージボックスが表示されるはず: 品番:(データPULLED) 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