Microsoft Excel

Herbers Excel/VBA-Archiv

.Columns(x).Copy mit Offset?

Betrifft: .Columns(x).Copy mit Offset? von: Robert
Geschrieben am: 18.08.2014 11:17:36

Hallo zusammen,

Ich seh mal wieder den Wald vor lauter Bäumen nicht. oder vielmehr finde ich den richtigen Baum vor Lauter Wald nicht.

Ich kopiere in ein Konsolidierungsfile Einzelne Spalten von verschiedenen Tabellen zusammen, bevor ich dann den Rest der Tabelle mittels Programm zusammensetze.
Nun will ich alle Daten dieser Spalte inkl. Header kopieren, die Überschrift steht aber erst in Zeile 7.

Ich Bräuchte also eine einfache möglichkeit folgendes:

Tabelle1.Columns(24).Copy

mit einem Offset von 6 zu verbinden.

Am liebsten wäre mir, wenn es nach wie vor in eine Zeile Code passen würde.

viele Grüße
Robert

  

Betrifft: AW: .Columns(x).Copy mit Offset? von: Daniel
Geschrieben am: 18.08.2014 11:36:24

Hi

Tabelle1.Range(Tabelle1.Cells(7, 24), Tabelle1.Cells(tabelle1.cells.specialcells(xlcelltypelastcell).row, 24)).copy

Gruß Daniel


  

Betrifft: AW: .Columns(x).Copy mit Offset? von: Robert
Geschrieben am: 18.08.2014 12:22:32

Hallo Daniel,

dann werd ich es wohl so machen (allerdings mit Rows.Count.End, wenn du dich an meine Probleme mit Usedrange erinnerst).
Ich hatte ja die Hoffnung dass ich nur die Syntax nicht richtig zusammengebracht hab und es eine einfache ösung gibt.

viele grüße
Robert


  

Betrifft: AW: .Columns(x).Copy mit Offset? von: Daniel
Geschrieben am: 18.08.2014 13:27:57

wenn du Rows.count auf das SpecialCells(xlcelltypelastcell) anwendest, dann bekommst du 1 als Ergebnis, weil die letzte Zelle nur eine Zelle ist.

ein Offset auf die ganze Spalte würde natürlich auch funktionieren, allerdings darfst du natürlich keine Zellen ausserhalb des Tabellenblatts ansprechen (die gibst nämlich nicht).
deshalb musst du, wenn du von einer ganzen Spalte ausgehst, diese zuerst verkleinern, bevor du das Offset anwendest:

Tabelle1.Columns(24).Resize(Tabelle1.Rows.count - 7).Offset(6, 0).Copy

Gruß Daniel


  

Betrifft: AW: .Columns(x).Copy mit Offset? von: Robert
Geschrieben am: 18.08.2014 13:53:24

Hallo Daniel.

Ich meinte natürlich Cells(Rows.Count,24).End(xlup) statt dem Specialcells, um die letzte Reihe zuverlässig zu ermitteln.

Ging aber doch einfacher:

Tabelle1.UsedRange.Columns(24).Offset(6).Copy
Studieren über Probieren :)

Viele Grüße
Robert


  

Betrifft: AW: .Columns(x).Copy mit Offset? von: Daniel
Geschrieben am: 18.08.2014 14:18:53

Hi
nur dann, wenn die Zeile 1 zur UsedRange gehört.
Ist die Zeile 1 eine Leerzeile, welche nicht zur UsedRange gehört, dann kopierst du nicht ab Zeile 7, sondern ab Zeile 8.

Gruß Daniel


  

Betrifft: AW: .Columns(x).Copy mit Offset? von: Robert
Geschrieben am: 18.08.2014 15:18:49

Danke für den Hinweis,

ist bei mir der Fall, deswegen passts.
Danke :)