2016-11-03 5 views
0

Ich möchte bestimmte Tabellen von einem Blatt zum anderen kopieren. Um dies zu tun Ich habe den folgenden Code:VBA - benutzerdefinierte For-Schleife

Dim start As Long 
Dim eind As Long 
Dim output As Long 
Dim tbl As Range 
Dim dest As Range 

output = 5 

For start = 3 To 224 Step 13 
     end = start + 10 
     Set tbl = Sheets("Model").Range("C" & start & ":E" & end) 
     Set dest = Sheets("Sheet1").Range("B" & output).Resize(tbl.Rows.Count, tbl.Columns.Count) 
     dest.Value = tbl.Value 
     output = output + 16 
Next start 

jedoch dieser Code kopiert alle Tabellen von „Model“ auf „Sheet1“. Ich möchte nur die Tabellen mit den Namen A, B, C, E, G, H, J und L. (Die Namen sind in D2, D15, D28, D41 usw.).

Gibt es eine Möglichkeit, diese spezifischen Tabellen vor der for-Schleife zu definieren und diese in die Schleife zu integrieren? Oder gibt es einen anderen Weg, dies zu tun?

Vielen Dank!

Antwort

0

Ich bin nicht durch die Berechnungen im Code gehen ...

(Ich denke, es ist eine Fehlausrichtung: Sie For start = 3 To 224 Step 13 Schleife wollen, aber wollen Sie die Namen in D2, D15, D28 zu überprüfen. vielleicht sollte es For start = 2 .... sein ich bin nicht sicher, da Sie nicht Ihre Notendatenstruktur nicht geteilt)

Wie auch immer, die Bedingung hinzuzufügen, innerhalb der Schleife nur den Code verwenden unter:.

For start = 3 To 224 Step 13 
    end = start + 10 

    Select Case Sheets("Model").Range("D" & start - 1) ' I have "start -1" to adjust to rows 2, 15, 28, etc. 

     ' copy only Tables with the following names in Column D... 
     Case "A", "B", "C", "E", "G", "H", "J", "L" 
      Set tbl = Sheets("Model").Range("C" & start & ":E" & end) 
      Set dest = Sheets("Sheet1").Range("B" & output).Resize(tbl.Rows.Count, tbl.Columns.Count) 
      dest.Value = tbl.Value 

    End Select 

    output = output + 16 
Next start 
+0

Vielen Dank für die Antwort, das war, was ich gesucht habe. Übrigens gibt es keine Fehlausrichtung, da ich nur den Inhalt der Tabelle kopieren möchte, den Header ausgenommen, während der Tabellenname in der Kopfzeile ist. – Z117

+0

Es funktioniert nicht wie erhofft. Weil ich im Ausgabeblatt ein Leerzeichen bekomme, wo sich Tabelle D im Quellblatt befand, da ich diese Tabelle nicht kopiere. Ich möchte A, B, C, E, G, H, J und L direkt unter einander haben. Verstehst du was ich sage? – Z117

+0

@LauZ darum ging es in deinem Beitrag nicht. Entweder fügen Sie eine Bildschirmaufnahme beider Blätter hinzu (simulierte Eingabe und Ausgabe). Oder Sie können dies als Antwort markieren und einen neuen Beitrag öffnen. Es wird auch anderen Benutzern auf SO eine Chance geben, diese zu beantworten. –

Verwandte Themen