"AndAlso"???? io smetterei di usare questo linguaggio solo per questo!
si purtroppo da quel poco che ho capito il C# è più efficace del vb.net in certe situazioni però ormai sto imparando questo e non mi va di ricominciare da zero. Comunque visto il tuo codice come diceva qualcuno "non è poi così facile". Io credo di aver risolto abbastanza brillantemente con una classe che sfrutta la potenza dei datagrid e con 1/4 del codice da te prodotto. L'importante è sempre raggiungere l'obiettivo

codice:
Public Shared Function MKred(ByRef DTG As DataGridView, ByRef ArrayV() As Integer, ByRef matk As Array) As Array 

      
        Dim dsNl As New DataSet("MK") 'crea il dataset
        Dim dtNl As New DataTable("MKred") ' crea il datatable

        Dim col As DataColumn

        For c As Integer = 0 To dim_tot
            col = New DataColumn(c, GetType(String))
            dtNl.Columns.Add(col)
        Next

        For i As Integer = 0 To dim_tot
            Dim newRow As DataRow = dtNl.NewRow()
            For j As Integer = 0 To dim_tot

                newRow(j) = matk(i, j)
            Next
            dtNl.Rows.Add(newRow)
        Next
        'aggiunge la tabella al dataset
        dsNl.Tables.Add(dtNl)

        DTG.DataSource = dtNl
        DTG.RowHeadersVisible = False
        DTG.AutoSize = False

        Dim v As Integer
        Dim l, di As Integer
        di = Math.Sqrt(matk.Length) - 1
        l = ArrayV.Length - 1
        For v = 0 To l
            If v = 0 Then
                DTG.Columns.RemoveAt(ArrayV(v))
                DTG.Rows.RemoveAt(ArrayV(v))
            Else
                DTG.Columns.RemoveAt(ArrayV(v) - v)
                DTG.Rows.RemoveAt(ArrayV(v) - v)
            End If
        Next

               
        Dim MRKr(maxdim - 1, maxdim - 1) As Double

        For i As Integer = 0 To maxdim - 1
            For j As Integer = 0 To maxdim - 1
                MRKr(i, j) = CDbl(DTG.Item(j, i).Value)
            Next
        Next

        Return MRKr

    End Function

'nb maxdim e dim_tot possono essere passati all'interno della function o messi tra i parametri
Nel form basta istanziarla coi riferimenti ai parametri e via