Try this.
Dim DataObj As New MSForms.DataObject
Dim STR1 As String
Dim arrText()
Dim I As Long
Dim idx As Long

    For I = 0 To 45
        If Me.Controls("A" & I).Visible = True Then
            Redim Preserve arrText(idx)  
            arrText(idx) = Me.Controls("A" & I).Value
            idx = idx + 1
        End If
    Next I

    With DataObj
        .SetText Join(arrText, vbCrLf)
        .PutInClipboard
    End With
    
    Unload Me
PS Can you add code tags when posting code?