AW: Makro Zelle markieren für kopieren
06.04.2023 21:49:25
Yal
Hallo Daniel,
beim Makros, die über den über den Makrorekorder aufgezeichnet worden sind, sind alle Schritte, die per Hand gemacht wurden, aufgezeichnet. Es führt dazu, dass immer zuerst markiert, und dann kopiert wird "... .Select" und dann "Selection.Copy". Diese Selection kannst Du übergehen und direkt den gegebenen Bereicht kopieren:
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
Yal