Porque en tu primer IF 
   Cita:  If lineasafectadas.HasRows Then
    Estás contemplando toda tu lógica y obviamente si no hay rows obviamente nada de lo que está dentro del IF será validado, podrías quitar ese if y solamente hacerlo así:  
Código:
         Dim rows As Integer = 0
        While lineasafectadas.Read()
            rows += 1
        End While
        MsgBox(rows)
        If rows = 0 Then
            MessageBox.Show("cero")
            Dim Lecto1 = comados.ExecuteNonQuery
        Else
            MessageBox.Show("hay")
        End If