Microsoft Excel

Herbers Excel/VBA-Archiv

Kopieren von Spalten aus Quelle zu Zieldatei

Betrifft: Kopieren von Spalten aus Quelle zu Zieldatei von: ANAnas
Geschrieben am: 16.10.2014 09:46:41

Hallo liebe Community,

ich habe ein kleines Problem in einem Quellcode...
Die Aufgabe ist es, Spalten aus der Quelldatei in die Zieldatei zu übertragen. Die Reihenfolge, wie sie kopiert werden gebe ich vor. Es sollen zudem Leere Spalten mit übergeben werden... Der Quellcode jedoch sortiert sich die Reihenfolge automatisch numerisch bzw alphabetisch.

Hier ein Auszug vom Quellcode

With wksData
With .UsedRange
Zeile_L = .Row + .Rows.Count - 1 'letzte benutze Zeile
End With
For Spalte_D = 1 To .UsedRange.Column + .UsedRange.Columns.Count - 1
Select Case Spalte_D
Case 15, 17, 66, 11, 55, 25, 23, 80, 81, 82, 83, 84, 85, 27, 86, 87, 28, 88, 89, 90, 91, 29, 30 'o,q,bn,k,bc,y,w,6 Leerzeilen,aa,2 Leerzeilen,ab,4 Leerzeilen,ac,ad
.Range(.Cells(2, Spalte_D), .Cells(Zeile_L, Spalte_D)).Copy
wksZiel.Cells(Zeile_Z, Spalte_Z).PasteSpecial Paste:=xlPasteValues

Spalte_Z = Spalte_Z + 1
Case Else
'do nothing
End Select
Next
End With

Application.CutCopyMode = False

Wie kann ich es bewerkstelligen, dass meine Kopierreiehnfolge eingehalten wird und dementsprechend eingefügt wird?
Vielen Dank im vorraus :)

  

Betrifft: AW: Kopieren von Spalten aus Quelle zu Zieldatei von: fcs
Geschrieben am: 17.10.2014 14:19:11

Hallo ANAna,

du musst die Spaltennummern in ein Datenarray packen und dann das Array in der Schleife abarbeiten.

AlternativE:
Man könnte auch für jede Quellspalte eine Case-Zeile erstellen in der die Zielspalte festgelegt wird. Unter Case Else wird die Zielspalte = 0 gesetzt
Nach End Select wird in einer If-Anweisung geprüft ob die Zielspalte ungleich 0 ist und kopiert.

Gruß
Franz

  Dim arrSpalten
  With wksData
    With .UsedRange
      Zeile_L = .Row + .Rows.Count - 1 'letzte benutze Zeile
    End With
    arrSpalten = Array(15, 17, 66, 11, 55, 25, 23, 80, 81, 82, 83, 84, 85, 27, 86, 87, 28, 88,  _
89, _
      90, 91, 29, 30) 'o,q,bn,k,bc,y,w,6 Leerzeilen,aa,2 Leerzeilen,ab,4 Leerzeilen,ac,ad
    For Spalte_D = LBound(arrSpalten) To UBound(arrSpalten)
          .Range(.Cells(2, arrSpalten(Spalte_D)), .Cells(Zeile_L, arrSpalten(Spalte_D))).Copy
          wksZiel.Cells(Zeile_Z, Spalte_Z).PasteSpecial Paste:=xlPasteValues
          Spalte_Z = Spalte_Z + 1
    Next
  End With
  
  Application.CutCopyMode = False



 

Beiträge aus den Excel-Beispielen zum Thema "Kopieren von Spalten aus Quelle zu Zieldatei"