Your code seams to be OK in this form, but as you can see mine original file was made to watch the last cell from column "B" and if an value appears vlookup that value and bring the necesary information.
[VBA]Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Sheet1.Unprotect
lastln = (Sheet2.Cells(Sheet2.Rows.Count, 1).End(xlUp).Row)
Dim rChange As Range
On Error GoTo ErrHandler
Set rChange = Intersect(Target, Range("B:B"))
If Not rChange Is Nothing Then
Application.EnableEvents = False
If Target > "" Then
For i = 1 To 8
Target.Offset(, i).Value = Evaluate("=VLOOKUP(B" & Target.Row & ",Sheet3!A1:G500," & i + 1 & ",FALSE)")
Next
End If
End If
ExitHandler:
Set rChange = Nothing
Application.EnableEvents = True
Exit Sub
ErrHandler:
MsgBox Err.Description
Resume ExitHandler
Sheet1.Protect
End Sub[/VBA]
MVP (Excel 2008-2010)
Post a workbook with sample data and layout if you want a quicker solution.