As Paul did, I would use the Selection range as the Target range. Notice that I just changed the first 3 lines of code.

When you write worksheet or workbook event code, you can send the input parameter(s) to a Sub if you ever need to reuse the code. Then just call that routine in your events as needed. Of course if you write event code to iterate all cells in a Target range, that event will fire for each cell in the target intersection. Then just cut and paste back to get data up to date.
Sub Module_Change() 
     'http://answers.microsoft.com/en-us/office/forum/office_2007-excel/insert-formula-for-row-using-worksheet-change/aa1d08d9-9981-4f96-ad57-b1bd1d72e7bb?msgId=1660522c-db3b-4a74-8fd0-fe4a25676dbd
    Dim r As Variant, s As Variant, Target as Range 
    Set Target = Selection
    If Target.Cells.Count > 1 Then Exit Sub 
    If Not Intersect(Target, Columns(1)) Is Nothing Then 
        Application.EnableEvents = False 
        On Error Resume Next 
        With Target.Offset(, 1) 
            .Formula = "=VLookup(" & Target.Address & ", Data, 5, False)" 
            .Value = .Value 
        End With 
         '    With Target.Offset(, 2)  'Column C
         '      .Formula = "=VLookup(" & Target.Address & ", Data, 6, False)"
         '      .Value = .Value
         '    End With
        On Error Goto 0 
         'get rid of NA
        If WorksheetFunction.IsNA(Target.Offset(, 1)) Then 
            Target.Offset(, 1).ClearContents 
        End If 
         '    If WorksheetFunction.IsNA(Target.Offset(, 2)) Then
         '      Target.Offset(, 2).ClearContents
         '    End If
    End If 
    Application.EnableEvents = True 
End Sub