Are you really having 256 TextBoxes with s56 columns of data? I think your project is very poorly thought out, that amount of columns is going to be horrendous to manage

If one collection is just the column names then use Labels not TextBoxes.

Rename the labels as lbl1. lbl2 etc. Rename the TextBoxes as TB1,TB2 etc

Private Sub CBNames_Change()
    Dim lRw As Long
    Dim iX As Integer
    With Sheets("Main")
        lRw = .CBNames.ListIndex + 2    '<-add 2 to allow for header row & ListIndex starts at zero
        For iX = 1 To .UsedRange.Columns.Count
            Me("lb" & iX).Caption = .Cells(1, iX).Value
            Me("Tb" & iX).Value = .Cells(lRw, iX).Value
        Next iX
    End With
End Sub