ciao
ti posto il codice dwella funzione che riesce a unire le celle , la funzione vuole il numero colonna come parametro e unisce le celle in base lla colonna,se trova le stesse occorrenze

codice:
    Public Sub UnisciColonneDatagrid(ByVal DG As DataGrid, ByVal Col As Int16)

        Dim i As Integer
        Dim Sapp As String = ""
        Dim Ssucc As String = ""
        Dim conta As Int16 = 1 'conta le occorrenze
        Dim cc As TableCell

        For i = 0 To DG.Items.Count - 1
            Sapp = DG.Items(i).Cells(Col).Text


            If i = DG.Items.Count - 1 Then '-----ultima riga
                If Ssucc = Sapp Then
                    DG.Items(i).Cells.RemoveAt(Col)
                    cc.RowSpan = conta ' - 1 '+ 1
                    cc.Text = Sapp
                    DG.Items(i - conta + 1).Cells.AddAt(Col, cc) '- conta
                End If

                GoTo continua'sostituire con variabile bool
            Else
                Ssucc = DG.Items(i + 1).Cells(Col).Text
            End If


            If Sapp = Ssucc Then 'Or (Ssucc = Sapp) Then 'And Sprec <> ""
                conta = conta + 1
                cc = DG.Items(i).Cells(Col)
                DG.Items(i).Cells.RemoveAt(Col)

            ElseIf Sapp <> Ssucc And conta > 1 Then
                DG.Items(i).Cells.RemoveAt(Col)

                cc.RowSpan = conta ' - 1 '+ 1
                cc.Text = Sapp
                DG.Items(i - conta + 1).Cells.AddAt(Col, cc) '- conta
                conta = 1 'resetto il conta
            End If

continua:'da eliminare

        Next

    End Sub
il guaio di questa funzione è che nonostanze sembri funzionare, se si ha nel datagrid una colonna template con una combobox e si tenta di ciclare la grigglia, riusciresti solo a prendere la prima occorrenza della combo,se in una cella prima è stata unita

grazie
p.s.
la funzione ovviamente è da migliorare,quindi non guardare le ottimizzazioni, ma solo dove genera questa fastidioso errore,e mi riferisco ache ad "on error..."