This procedure is used to search through a database of customers via first and last names. If the user leaves the txtSearchFirst or txtSearchLast fields empty, a msgbox is displayed and the search is cancelled. Why is the sub continuing to the next lines of code if it should be exiting the sub?

VB Code:
  1. Private Sub cmdSearch_Click()
  2.  
  3.     If txtSearchFirst = "" Or txtSearchLast = "" Then
  4.         MsgBox "Missing information for a valid search", vbCritical, "Warning!"
  5.         Exit Sub
  6.     End If
  7.  
  8.     adoSearch.Recordset.MoveFirst
  9.        
  10.     Do While Not adoSearch.Recordset.EOF
  11.         If adoSearch.Recordset.Fields("First Name").Value = txtSearchFirst And _
  12.             adoSearch.Recordset.Fields("Last Name").Value = txtSearchLast Then
  13.             MsgBox "Match Found!", vbInformation, ""
  14.             fraResults.Visible = True
  15.             imgResultsGirl.Visible = True
  16.             imgWelcomeBack.Visible = True
  17.             lblWelcomeName.Caption = txtResultFirst & " " & txtResultLast
  18.             lblWelcomeName.Visible = True
  19.             txtResultFirst = adoSearch.Recordset.Fields("First Name")
  20.             txtResultLast = adoSearch.Recordset.Fields("Last Name")
  21.             txtResultStreet = adoSearch.Recordset.Fields("Street")
  22.             txtResultCity = adoSearch.Recordset.Fields("City")
  23.             txtResultState = adoSearch.Recordset.Fields("State")
  24.             txtResultZip = adoSearch.Recordset.Fields("ZipCode")
  25.             txtResultPhone = adoSearch.Recordset.Fields("Phone")
  26.             txtResultFax = adoSearch.Recordset.Fields("Fax")
  27.             txtResultEmail = adoSearch.Recordset.Fields("Email")
  28.             adoSearch.Recordset.MoveNext
  29.     Loop
  30.             Else
  31.             MsgBox "No Match Found", vbInformation, ""
  32.             Exit Sub
  33.         End If
  34.            
  35. End Sub