Buenas, a ver si me podéis echar una mano. Tengo un form que contiene un checked list box, cuyo contenido es el siguiente

Código:
With cmd
                .CommandType = CommandType.Text
                .CommandText = "Select CENTRO, IDENTF from CTR00 where CODEMP = '" & iCodemp & "'"
                .Connection = con
            End With
            da.SelectCommand = cmd
            dt = New DataTable
            da.Fill(dt)
            With CheckedListBox1
                .DataSource = dt
                .DisplayMember = "IDENTF"
                .ValueMember = "CENTRO"

            End With
Esto muestra al usuario una lista de tres checkbox, que en crudo sería algo así:

Centro Identf
1 Centro 1
2 Centro 2
3 Centro 3

Lo que se muestra en pantalla es la columna "IDENTF", con sus correspondientes checkbox en blanco. En otra tabla almaceno las distintas combinaciones que se pueden hacer, usando el nombre de la combinación como clave y añadiendo una fila por cada elemento seleccionado (esto lo introduje manualmente en SQL Server). Por ejemplo, una combinación que usa una sola opción y otra que usa múltiples:

TipoConsulta Centro
Individual1 1
Individual2 2
Individual3 3
Individual4 1
Individual4 2
Individual4 3

El caso es que cuando elijo un tipo de consulta, debería mostrar los checkbox marcados siempre que coincidan los valores de la segunda tabla con los de la primera, y no lo hace.

Recojo los Centros en una colección:
Código:
Try
            con.Open()
            Dim da As New SqlDataAdapter("Select centro from cns01 where codemp = '" & iCodemp & "' and TIPCON = '" & iTipCons & "'", con)
            Dim dt As New DataTable
            Dim oCB As SqlCommandBuilder = New SqlCommandBuilder(da)

            dst = New DataSet
            bdsChecker.DataSource = dst
            da.Fill(dst, "centro")
            con.Close()
            'Tras conectar con la tabla, se crea una colección y se llena
            'con el campo especificado

            For Each dtRow As DataRow In dst.Tables(0).Rows
                Dim dtNombre As String = dtRow.Item("centro").ToString
                colCentros.Add(CObj(dtNombre))

                Dim iTotalNombres As Integer
                iTotalNombres = colCentros.Count


            Next
Mediante el modo depuración compruebo que están correctamente almacenados, que es el caso. Ahora, por cada elemento en la colección, quiero que recorra el checked list box y marque como TRUE aquellos elementos en los que sea igual el item de la coleccion y el valor del checkbox

Código:
Try
                For Each item As String In colCentros
                    For i = 0 To (CheckedListBox1.Items.Count - 1)
                        'Aquellos que coincidan se deberían marcar
                        Dim valuem As String = CheckedListBox1.SelectedValue


                        If CheckedListBox1.SelectedValue = item Then
                            'Los marco
                            CheckedListBox1.SetItemChecked(i, True)
                        End If
                    Next
                Next
                'Recorro toda la lista

            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
            colCentros.Clear()

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
He probado de todo, esto es lo último y me lo marca todo (es lo más cerca que he estado). Solo debería marcar los elementos que coinciden con los de la colección. Sé que estoy cerca pero tras varios días batallando y probando lo indecible, estoy al borde del colapso.

Cualquier tipo de pista o ayuda será enormemente bienvenida. Gracias.