I've checked for hours but I can't seem to find anything to help.
I want to loop through tables and columns from a dataset and use the column name in a combobox.items.add() line, however the eventual goal is to fill the combobox from the dataset itself possibly in a combobox.datasource line.
The first problem is that I can't get the code correct to setup the combobox control where it allows me to use .items.add("") and in extension .datasource
Error Message = "Object reference not set to an instance of an object"
dstcopt is the dataset from a oledbDataAdapter .fill(dstcopt,"table") line (which returns correct values)
tc_opt is a tab name on a tab control where the comboboxes are
            For Each dstable In dstcopt.Tables
                For Each dscolumn In dstable.Columns
                    Dim colName As String = dscolumn.ToString
                    MsgBox(colName) 'This retuns "aantigen"
                    Dim cb As ComboBox = Me.tc_opt.Controls("cb_" & colName)
                    cb.Items.Add(colName)
                    'cb_aantigen.DataSource = dstcopt.Tables(dstable.ToString)
                    'cb_aantigen.DisplayMember = "aantigen"
                    'cb_atarget.DataSource = dstcopt.Tables(dstable.ToString)
                    'cb_atarget.DisplayMember = "atarget"
                Next
            Next
The second problem comes when I do it manually (which works) using the exact combobox names cb_aantigen and cb_atarget as seen in the comments. 
The problem is that once the form is loaded and the cb's are filled with the correct values, I can't change the value in any single cb individually, when I change one value it changes them all (there is 15 comboboxes in total) I know this is down to using a dataset, but I don't know away to 'unlink them from each other or the dataset'
Not sure if I need to split this into 2 questions, but help on either problem would be appreciated.
EDIT:
After looking at only this section of code for a day. This is what I have come up with to tackle both the problems at once.
The combobox control not working was down to using a tab tc_opt instead of a groupbox gp_anti
The issue with splitting the dataset up into individual comboboxes, I've worked around by taking the value of each cell in the database and adding it separately, probably a better way to do it though
            For Each dstable As DataTable In dstcopt.Tables
                For Each dscolumn As DataColumn In dstable.Columns
                    Dim colName As String = dscolumn.ToString
                    Dim cb(2) As ComboBox
                    cb(0) = CType(Me.gp_anti.Controls("cb_" & colName), ComboBox)
                    cb(1) = CType(Me.gp_rec.Controls("cb_" & colName), ComboBox)
                    cb(2) = CType(Me.gp_nat.Controls("cb_" & colName), ComboBox)
                    For icb = 0 To cb.Count - 1
                        If Not (IsNothing(cb(icb))) Then
                            For irow = 0 To dstable.Rows.Count - 1
                                If dstable.Rows(irow)(colName).ToString <> Nothing Then
                                    Dim icbitemdupe As Boolean = False
                                    If cb(icb).Items.Contains(dstable.Rows(irow)(colName).ToString) Then
                                        icbitemdupe = True
                                    End If
                                    If icbitemdupe = False Then
                                        cb(icb).Items.Add(dstable.Rows(irow)(colName).ToString)
                                    End If
                                End If
                            Next
                        End If
                    Next
                Next
            Next
