This is my match code for a userform, when a user enters data - id number and some other data and clicks enter the code checks for a match and gives a msge "already exsists" but it only clears the Target.clearscontents? and leaves behind the new data in the row. Can anyone help with a code to clear all the new data?

What I would like is when a user enters the id number some way of checking for a match before all the other data is entered?
mycode

Private Sub Worksheet_Change(ByVal Target As Range)
Dim iCol As Integer
Dim iRow As Integer
Dim i As Integer
Dim strID

iCol = Target.Column
iRow = Target.Row

strID = Target.Value
On Error GoTo Worksheet_Change_End

If Len(strID) > 9 And Len(strID) <> 0 And iCol = 1 Then
MsgBox prompt:=" Too Many Characters", _
Buttons:=vbCritical + vbOKOnly, _
Title:="Error!!"
Target.ClearContents
Exit Sub
ElseIf Len(strID) < 7 And Len(strID) <> 0 And iCol = 1 Then
MsgBox prompt:=" Too Few Characters", _
Buttons:=vbCritical + vbOKOnly, _
Title:="Error!!"
Target.ClearContents
Exit Sub
End If

For i = 9 To 3000
If Cells(i, 1) = strID And i <> iRow And strID <> "" And iCol = 1 Then
MsgBox prompt:=Cells(i, 2) & " already exists", _
Buttons:=vbCritical + vbOKOnly, _
Title:="Error!!"
Target.ClearContents.
Exit Sub
End If
Next i

If Cells(iRow, iCol) = UCase(Cells(iRow, iCol)) Then Exit Sub

If iCol = 1 Or iCol = 2 Or iCol = 3 Or iCol = 4 Or iCol = 28 Then
Cells(iRow, iCol) = UCase(Cells(iRow, iCol))
End If

Worksheet_Change_End:
End Sub


thanks

huffers