In Excel mit Makro bestimmte Bereiche in erste freie Zeile kopieren

2 Antworten

Oh hab nicht gesehen dass man manuell Textumbrüche machen muss, sorry. Jetzt ist das Makro bissel übersichtlicher

Sub neu()

'** Ermittlung der letzten Spalte in Zeile 1

ls = Cells(1, Columns.Count).End(xlToLeft).Columns.Column

'** Durchlauf aller Zeilen

Dim s As Integer

For s = ls To 1 Step -1 'Zählung rückwärts bis Spalte 1 '** Abfragen, ob in der ersten Spalte Datum steht

If Cells(1, s).Value = "Date"

Then '** Wenn Datum steht dann soll die Range ab Datum 90 Zeilen nach unten und 17 Spalten nach rechts kopiert werden

Range(Cell(1, s), Cell(90, s & 17)).Select

Selection.Copy

Range("A65536").End(xlUp).Paste

End If

Next s

End Sub

maximilianus7  21.01.2015, 12:53

noch besser wärs den code mit ctrl-K zu formatieren. dann bleibt die struktur des textes erhalten. - beim nächsten mal.

Range(Cell(1, s), Cell(90, s & 17)).Select

  1. ist zwar syntaktisch richtig s & 17 ergibt aber eine string-verkettung, bei s=3 also 317. ich denke du meinst aber s + 17 (=20).
  2. warum rollst du das von hinten auf? ich würde erst eine frei zeile ermitteln, dann von links nach rechts die alten zellen umkopieren, bis nix mehr da ist.
prinzboldi 
Fragesteller
 21.01.2015, 13:29
  1. Ja ich meine s+17 = 20. Also wenn s=3 ist (=C), will ich die Range (C1:C90+17). = (C1:T90) Wie mache ich das?
  2. Das mache ich einfach nur weil ich das in nem Forum bei nem ähnlichen Problem so gesehen habe =)