Hallo zusammen
Wie kann ich über Makro ab Zeile 2 bis zur letzte Zeile mit Inhalt die Spalte A bis W markieren. Kann auch vorkommen, dass die erste und letzte Zeile die Zeile 2 ist.
Vielen Dank im Voraus.
Gruss
Daniel
Hallo zusammen
Wie kann ich über Makro ab Zeile 2 bis zur letzte Zeile mit Inhalt die Spalte A bis W markieren. Kann auch vorkommen, dass die erste und letzte Zeile die Zeile 2 ist.
Vielen Dank im Voraus.
Gruss
Daniel
Sub Unit()
Dim Quelle As Range
Dim Ziel As Range
Set Quelle = ActiveSheet.Range(ActiveSheet.Cells(2, 1), ActiveSheet.Cells(Rows.Count, 1).End(xlUp)).Resize(, ActiveSheet.Columns("W").Column)
Set Ziel = ActiveSheet.Next.Cells(2, 1) 'auf Blatt rechts vom Quellblatt
Call Quelle.Copy(Ziel)
Set Quelle = Nothing: Set Ziel = Nothing
End Sub
Markieren ist nicht notwendig.
ActiveSheet.Range("A2:D5").Copy
Zusätzlich geht es bei deiner Fragedarum, wie man die letzte befüllte Zelle in Spalte W ermittelt: man nimmt die letzte Zelle in Spalte W (richig die letzte "W1048576", der Zahl entspricht die Anzahl an Zeilen in der Tabelle: Rows.Count) und sucht die erste befüllte nach oben: Strg+Pfeil nach oben. In VBA wird es so geschrieben:
ActiveSheet.Cells(Rows.Count, "W").End(xlUp)
aber das wäre nur eine einzige Zelle. Um einen Bereich zu haben, brauchst eine erste und eine letzte Zelle:
Range(ActiveSheet.Range("A2"), ActiveSheet.Range(Rows.Count, "W")).Copy
Wenn Du nicht sicher bist, dass in der letzte Zeile die Zelle in Spalte W befüllt ist, aber sicher, dass die Zelle in Spalte A befüllt ist, kannst Du statt obere linke zu untere rechte umkehren in obere rechte zu untere linke. Es sieht dann so aus:
Range(ActiveSheet.Range("W2"), ActiveSheet.Range(Rows.Count, "A")).Copy
Wenn Du voher nur testen möchtest, verwende eine MsgBox, um die Adresse des Bereiches anzuzeigen:
MsgBox Range(ActiveSheet.Range("A2"), ActiveSheet.Range(Rows.Count, "W")).Address
VG