hola
He creado un DataGridView dentro da algunas celdas he añadido combox (DataGridViewComboBoxCell). El caso es que necesito que al seleccionar un elemento del combo, automáticamente reciba el evento y usar el valor seleccionado para buscarlo en una tabla DataTable para luego obtener un valor:
    Public Sub GetValue(ByVal numCol As Integer, ByVal numRow As Integer)
        If numCol = 0 Then
            For Each N As DataRow In dt.Rows
                Dim Item As String = CStr(N.Item(1).ToString.Replace("*", ""))
                Try
                    If DataGridView1.Item(numCol, numRow).Value.ToString.Contains(Item) Then
                        DataGridView1.Item(5, 0).Value = N.Item(10)
                    End If
                Catch ex As Exception
                End Try
            Next
        End If
    End Sub
Tengo una tabla DataTable llamada dt y con el este código la idea es añadirla en un evento el cual me devuelve la columna y la fila donde  he seleccionado el elemento del combo y llamo al procedimiento getValue:
GetValue(e.ColumnIndex, e.RowIndex )
Pero no consigo encontrar ningún evento que ejecute el procedimiento instantáneamente nada más hacer clic en un elemento del combo.
Solo consigo que devuelva el valor cuando hago clic en otra ceda del DataGridView y abandono el combo.
espero me puedan ayudar  :)
Gracias
			
			
			
				Hola.
Si no te he entendido mal quieres ser capaz de controlar el evento ComboBox.SelectedIndexChanged de los ComboBoxes que existan en las celdas de tu DataGridView, y obtener el número de columna y fila de la celda cada que que dicho evento se dispare.
Bien, pues para ello puedes controlar el evento DataGridView.EditingControlShowing de la siguiente manera. Te muestro un ejemplo que puedas adaptar a tus necesidades:
Public NotInheritable Class Form1 : Inherits Form
    Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
        Dim column As New DataGridViewComboBoxColumn()
        With column
            .DataSource = "qwerty".ToArray()
            .ValueType = GetType(Char)
        End With
        Me.DataGridView1.Columns.Add(column)
    End Sub
    Private Sub DataGridView1_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) _
    Handles DataGridView1.EditingControlShowing
        Dim cb As ComboBox = DirectCast(e.Control, ComboBox)
        ' Eliminar un posible controlador de evento que haya sido agregado anteriormente, para evitar agregar varios.
        RemoveHandler cb.SelectedIndexChanged, AddressOf Me.ComboBox_SelectedIndexChanged
        ' Aasociar el nuevo controlador.
        AddHandler cb.SelectedIndexChanged, AddressOf Me.ComboBox_SelectedIndexChanged
    End Sub
    Private Sub ComboBox_SelectedIndexChanged(sender As Object, e As EventArgs)
        Dim cb As ComboBox = DirectCast(sender, ComboBox)
        If (cb.SelectedIndex <> -1) Then
            Dim dgv As DataGridView = DirectCast(cb.Parent.Parent, DataGridView)
            Dim cell As DataGridViewCell = dgv.CurrentCell
            Dim colIndex As Integer = cell.ColumnIndex
            Dim rowIndex As Integer = cell.RowIndex
            Dim sb As New StringBuilder()
            sb.AppendLine(String.Format("Selected index changed: {0}", cb.SelectedIndex))
            sb.AppendLine(String.Format("Column Index: {0}, Row Index: {1}", colIndex, rowIndex))
            MessageBox.Show(sb.ToString())
        End If
    End Sub
End Class
¡Saludos!
			
			
			
				@Elektro sois un genio muchas gracias. ;-) 
Funciona perfecto.
Ahora tengo que usar SelectedItem debido a que el DataGridView no recoge el elemento seleccionado hasta haber abandonado la celda o haber pulsado Enter. Ese era el problema. Ahora va perfecto.
...
    Private Sub ComboBox_SelectedIndexChanged(sender As Object, e As EventArgs)
        Dim cb As ComboBox = DirectCast(sender, ComboBox)
        If (cb.SelectedIndex <> -1) Then
            Dim dgv As DataGridView = DirectCast(cb.Parent.Parent, DataGridView)
            Dim cell As DataGridViewCell = dgv.CurrentCell
            Dim colIndex As Integer = cell.ColumnIndex
            Dim rowIndex As Integer = cell.RowIndex
            'Dim sb As New System.Text.StringBuilder()
            'sb.AppendLine(String.Format("Selected index changed: {0}", cb.SelectedIndex))
            'sb.AppendLine(String.Format("Column Index: {0}, Row Index: {1}", colIndex, rowIndex))
            'MessageBox.Show(sb.ToString())
            MessageBox.Show(CStr(DataGridView1.Item(colIndex, rowIndex).Value))
            MessageBox.Show(CStr(cb.SelectedItem))
        End If
    End Sub
El primer mensaje  aparece vacío, mientras que el segundo devuelve valor. 
Saludos