2017-02-17 4 views
0

Actuellement, je suis en mesure de sélectionner plusieurs feuilles dans la zone de liste mais je ne suis pas en mesure de fusionner les feuilles sélectionnées dans une nouvelle feuille. Quelqu'un peut-il m'aider s'il vous plaît avec ceci. Et voici mon code.Sélection de plusieurs feuilles dans la liste déroulante de formulaire et fusion sélectionnée à la nouvelle feuille

Private Sub CommandButton1_Click() 

    Dim i As Integer 
    Dim wrk As Workbook 
    Dim sht As Worksheet 
    Dim Rng As Range 
    Dim colCount As Integer 

    Set wrk = ActiveWorkbook 

    For i = 0 To ListBox1.ListCount - 1 
     If ListBox1.Selected(i) Then 


Set trg = wrk.Worksheets.Add(After:=wrk.Worksheets(wrk.Worksheets.Count)) 
Set sht = ListBox1.List(i) 

For Each sht In ListBox1 
If sht.Index = wrk.Worksheets.Count Then 
Exit For 
End If 

Set Rng = sht.Range(sht.Cells(2, 1), sht.Cells(65536, 1).End(xlUp).Resize(, colCount)) 
trg.Cells(65536, 1).End(xlUp).Offset(1).Resize(Rng.Rows.Count, Rng.Columns.Count).Value = Rng.Value 
Next sht 
trg.Columns.AutoFit 

     End If 
    Next i 

End Sub 


Private Sub UserForm_Activate() 

For n = 1 To ActiveWorkbook.Sheets.Count 
With ListBox1 
    .AddItem ActiveWorkbook.Sheets(n).Name 
End With 
Next n 

End Sub 
+0

Il y a quelques problèmes, mais vous ne définissez pas colcount pour un. – SJR

+0

SJR est correct. Essayez de changer (, colCount)) à (, 10)) et testez pour voir s'il copie les 10 premières colonnes et chaque rangée de chaque feuille. – Gordon

Répondre

0

Deviner un peu comme je ne connais pas la valeur de colcount pour une chose

Private Sub CommandButton1_Click() 

Dim i As Integer 
Dim wrk As Workbook 
Dim sht As Worksheet 
Dim Rng As Range 
Dim colCount As Integer 
Dim trg As Worksheet 

Set wrk = ActiveWorkbook 
colCount = 4 
Set trg = wrk.Worksheets.Add(After:=wrk.Worksheets(wrk.Worksheets.Count)) 

For i = 0 To ListBox1.ListCount - 1 
    If ListBox1.Selected(i) Then 
     Set sht = Sheets(ListBox1.List(i)) 
     With sht 
      Set Rng = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp).Resize(, colCount)) 
     End With 
     trg.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(Rng.Rows.Count, Rng.Columns.Count).Value = Rng.Value 
     trg.Columns.AutoFit 
    End If 
Next i 

End Sub 
+0

Merci SJR ça a marché :) – tharun