Registriert seit: 06.09.2016
Version(en): 2016
Hallo zusammen,
ich habe da einen Code der nicht funktioniert und ich weiß nicht warum...
Ich möchte den aktuellen Bereich einer Tabelle kopieren und in ein neues Blatt einfügen.
Dazu habe ich den Code gefunden:
Code:
Set Quellbereich = ActiveCell.CurrentRegion
Set NeuesBlatt = Workbooks.Add.Worksheets(1)
Quellbereich.Copy Destination:=NeuesBlatt.Range("A1")
Jetzt habe ich mir gedacht, dass das viel Code für eine einfache Sache ist, und habe es in
Code:
Cells(1,1).CurrentRegion.Copy Destination:=Workbooks.Add.Worksheets(1).Cells(1,1)
geändert.
Ich bekomme eine neue Mappe, aber es wird nichts kopiert.
Warum???
Vielen Dank für Eure Hilfe.
Gruß,
Lutz
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
(06.12.2019, 10:17)Lutz Fricke schrieb: Ich bekomme eine neue Mappe, aber es wird nichts kopiert.
Warum???
Weil es so eben nicht geht?
Gruß Uwe
Registriert seit: 06.09.2016
Version(en): 2016
Hallo Uwe,
das es nicht geht sehe ich... Aber warum?
Das Warum hilft, um zu verstehen, wie VBA funktioniert oder eben auch nicht. Bin leider kein gelernter Programmierer, sondern habe mir VBA rudimentär per Buch und Foren beigebracht.
Gruß,
Lutz
Registriert seit: 29.09.2015
Version(en): 2030,5
06.12.2019, 11:18
(Dieser Beitrag wurde zuletzt bearbeitet: 06.12.2019, 11:19 von snb.)
PHP-Code:
Sub M_snb()
ActiveCell.CurrentRegion.Copy
Workbooks.Add.Sheets(1).Paste
End Sub
oder
PHP-Code:
Sub M_snb()
With ActiveCell.CurrentRegion
Workbooks.Add.Sheets(1).Cells(1).Resize(.Rows.Count, .Columns.Count) = .Value
End With
End Sub
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Lutz,
ich kann da auch nur vermuten, dass bei dem direkten Copy das Ziel schon vorhanden sein muss, da die Zwischenablage übergangen wird.
Und es beruhigt mich jetzt doch, dass selbst snb keinen Einzeiler anbieten kann.
Gruß Uwe
Registriert seit: 29.09.2015
Version(en): 2030,5
06.12.2019, 12:25
(Dieser Beitrag wurde zuletzt bearbeitet: 06.12.2019, 12:25 von snb.)
Um die Warum Frage zu beantworten: weil die MS/Excel Programmierer das so programmiert haben.
Und auch MS/Excel Programmierer sind beschränkt in ihre Möglichkeiten (Machine Sprache, Speicher Beschränkungen, Kompatibilität mit altere Versionen, usw).
Im Laufe der Zeit haben viele Programmierer(Gruppen) an Excel gearbeitet. Das ist nicht immer eine Garantie für konsistente Wahlen.
@Kuwer
im Grunde ist dieser Code ein Einszeiler
Code:
Sub M_snb()
With ActiveCell.CurrentRegion
Workbooks.Add.Sheets(1).Cells(1).Resize(.Rows.Count, .Columns.Count) = .Value
End With
End Sub
denn kann auch so (etwas aufwändig) geschrieben werden:
PHP-Code:
Sub M_snb()
Workbooks.Add.Sheets(1).Cells(1).Resize(ThisWorkbook.ActiveSheet.Cells(1).CurrentRegion.Rows.Count, ThisWorkbook.ActiveSheet.Cells(1).CurrentRegion.Columns.Count) = ThisWorkbook.ActiveSheet.Cells(1).CurrentRegion.Value
End Sub
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
(06.12.2019, 12:25)snb schrieb: im Grunde ist dieser Code ein Einszeiler
denn kann auch so (etwas aufwändig) geschrieben werden:
OK, aber nur, wenn das ActiveSheet im ThisWorkbook ist.
Außerdem ist es nicht das Gleiche wie Copy (mit allen Formaten etc.).
Gruß Uwe
Registriert seit: 06.09.2016
Version(en): 2016
Hallo zusammen,
hab snb's erste Variante genommen, da ich Formate und so auch brauche.
Vielen Dank Euch beiden.
Schönes Wochenende.
Gruß,
Lutz