2017-10-03 5 views
0

Premier message - s'il vous plaît pardonnez ma naïveté."pour chaque" imbriqué pour faire défiler la liste déroulante et copier-coller

J'essaie de faire défiler toutes mes valeurs dans une liste déroulante dont la source est dans la feuille "Comm O & S", plage A31: L31. Je veux copier les valeurs d'une autre feuille qui résultent de la sélection dans la liste déroulante et coller ces valeurs dans une colonne dans une feuille séparée (à partir de la colonne C). Ensuite, je veux sélectionner la valeur suivante dans la liste déroulante et copier-coller les valeurs dans la colonne suivante, etc.

Je semble avoir du mal à imbriquer le copier-coller dans la boucle de liste déroulante. Mon code est ci-dessous. J'apprécie votre aide et votre pardon.

Sheets("Scenario by Payer").Activate 
For Each rngCell In wb.Worksheets("Comm O & S").Range("A31:L31") 
    ' Set the value of dd_comm 
    ws.Range("D14").Value = rngCell.Value 

    Sheets("Detailed Outputs").Select 
    Range("T52:t60").Select 
    Application.CutCopyMode = False 
    Selection.Copy 

    Sheets("Comm O & S").Activate 

    For Each c In ActiveSheet.Range("C7:L7").Cells 
     c.Select 
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
      :=False, Transpose:=False 

    Next rngCell 
Next c 
+0

[Lire] (https://stackoverflow.com/q/10714251/1188513), et modifiez votre code en conséquence. Cela dit, ce que vous demandez n'est pas clair. Courez-vous une erreur? Que ce passe-t-il? Quel est le problème spécifique? –

+0

Le problème est que vous collez sur vos résultats à chaque itération. Je suppose que vous voulez les résultats de la 1ère itération en C7, 2ème en D7, 3ème en E7, etc. Est-ce exact? – tigeravatar

+0

Oui, tigeravatar - J'essaie de coller les résultats dans C7, puis de faire le prochain élément de liste déroulante, de coller ces résultats dans D7, etc. Le problème est que les mêmes résultats sont collés dans chacune des colonnes; c'est-à-dire qu'il ne s'agit pas d'itérer dans la liste déroulante. Merci pour votre réponse et votre aide! – sophiesworld

Répondre

0

pour cette solution:

Sub tgr() 

    Dim wb As Workbook 
    Dim wsScen As Worksheet 
    Dim wsComm As Worksheet 
    Dim wsOuts As Worksheet 
    Dim rDDList As Range 
    Dim rDDCell As Range 
    Dim rDDValue As Range 
    Dim rCopy As Range 
    Dim rDest As Range 

    Set wb = ActiveWorkbook 
    Set wsScen = wb.Sheets("Scenario") 
    Set wsComm = wb.Sheets("Comm O & S") 
    Set wsOuts = wb.Sheets("Detailed Outputs") 

    Set rDDList = wsComm.Range("A31:L31") 
    Set rDDValue = wsScen.Range("D14") 
    Set rCopy = wsOuts.Range("T52:T60") 
    Set rDest = wsComm.Range("C7") 

    For Each rDDCell In rDDList.Cells 
     rDDValue.Value = rDDCell.Value 
     rDest.Resize(rCopy.Rows.Count, rCopy.Columns.Count).Value = rCopy.Value 
     Set rDest = rDest.Offset(, rCopy.Columns.Count) 
    Next rDDCell 

End Sub 
+0

Merci 100x, tigeravatar! Cela fonctionne parfaitement et m'aide dans mes efforts pour définir des variables avec Dim. Je vous remercie! – sophiesworld