Nota: Recordar que los datos nuevos que se ingresan, se hacen en la ultima fila
Private Function ExisteDatoEnGrid() As Boolean
Dim UltimaFila As Integer
Dim cVal as String
'Obtengo la ultima fila para que no se procese hasta el final
UltimaFila = DataGridView1.Rows.Count - 1
'Obtengo el valor de la primera columna ingresado por el usuario
cVal = DataGridView1.Rows(UltimaFila).Cells(0)
'Para cada fila del grid
For Each row As DataGridViewRow In DataGridView1.Rows
'Si es la última fila, se termina la función
If row.Index = UltimaFila Then
Exit Function
End If
'Pregunto si el dato de la primera columna es igual a lo ingresado en
'la ultima fila
If System.Convert.ToString(row.Cells(0).Value) = cVal Then
MsgBox("Este dato ya existe", MsgBoxStyle.Critical)
ExisteDatoEnGrid = True
Exit Function
Else
ExisteDatoEnGrid = False
End If
Next
End Function
El uso de esta función es, por ejemplo, cuando se da clic en el botón grabar.
Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
if ExisteDatoEnGrid = True Then
Exit Sub
Else
'Aquí puedo continuar
End If
End Sub