Ha! No. Like this
Dim DataObj As New MSForms.DataObject
Dim STR1 As String
Dim CtrlName As Variant
Dim A As Long

CtrlName = Split("A0,A49,A50,A46,A47,A1,A2,A3,A4,ComboBox3,A5,A6,A7,A8,A9,A10,A11,A12,ComboBox4,A13,A14,A15,A16,A17,A18,A19,A20,A21,A22,A23,A24,A25,A26,A27,A28,vbCrLf + A29,A30,A31,A32,A33,A34,A35,A36,A37,A38,A39,A40,A48,A41,A42,A43,A44,A45", ",")
       
For A = 0 To UBound(CtrlName)
  
    Select Case Ctrlname(A)
    
    Case "A0"
        If Me.A0.Visible  then
           STR1 = STR1 & a0 & vbCrLf & vbCrLf
        End if
        
    Case "A49"
          If Me.A49.Visible then 
             STR1 = STR1 & a49 & " 
          End if
    
    Case "A50"
        If Me.A49.Visible then 
          STR1 = STR1 & 50 & vbCrLf
        End If    
    '... and so on....
    
    End Select
Next
...
You have to fill the rest of the Case Statements for each Textbox since you seem to have different spaces and line feeds between different textboxes.

If you have the same pattern, then they can go on the the Case line separated by a comma.

I create an array with all the names of the controls. I, then, iterate through the list, testing for Visible in each control name.

If you still can't get it, upload a sample sheet with the userform.