If you want to create a separate sheet for each selected value, try:
Private Sub Generator_Click()
Dim my_range As Range
Dim NewForm As Worksheet
Dim Count As Integer
Dim NameColumn As Range
Dim shtData As Worksheet
Set shtData = ThisWorkbook.Worksheets("Database")
For Count = 0 To SelectedC.ListCount - 1
With shtData
Set NameColumn = .Rows(3).Find(SelectedC.List(Count))
If Not NameColumn Is Nothing Then
Set NewForm = Worksheets.Add(After:=shtData).Name = SelectedC.List(Count)
Set my_range = shtData.Range(shtData.Cells(4, NameColumn.Column), shtData.Cells(shtData.Rows.Count, NameColumn.Column).End(xlUp))
my_range.Copy NewForm.Range("A2")
End If
End With
FindNext:
Next Count
Unload Me
End Sub
If you want all the columns on one new sheet, try
Private Sub Generator_Click()
Dim my_range As Range
Dim NewForm As Worksheet
Dim Count As Integer
Dim NameColumn As Range
Dim shtData As Worksheet
Set shtData = ThisWorkbook.Worksheets("Database")
Set NewForm = Worksheets.Add(After:=shtData).Name = "New Form"
For Count = 0 To SelectedC.ListCount - 1
With shtData
Set NameColumn = .Rows(3).Find(SelectedC.List(Count))
If Not NameColumn Is Nothing Then
Set my_range = shtData.Range(shtData.Cells(4, NameColumn.Column), shtData.Cells(shtData.Rows.Count, NameColumn).End(xlUp))
my_range.Copy NewForm.Cells(2, Count + 1)
End If
End With
FindNext:
Next Count
Unload Me
End Sub
Bookmarks