Aktuellen Zellbereich kopieren
#1
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
Top
#2
(06.12.2019, 11:17)Lutz Fricke schrieb: Ich bekomme eine neue Mappe, aber es wird nichts kopiert.
Warum???

Weil es so eben nicht geht?

Gruß Uwe
Top
#3
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
Top
#4
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 
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#5
Hallo Lutz,

ich kann da auch nur vermuten, dass bei dem direkten Copy das Ziel schon vorhanden sein muss, da die Zwischenablage übergangen wird.  Blush
Und es beruhigt mich jetzt doch, dass selbst snb keinen Einzeiler anbieten kann.

Gruß Uwe
Top
#6
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.CountThisWorkbook.ActiveSheet.Cells(1).CurrentRegion.Columns.Count) = ThisWorkbook.ActiveSheet.Cells(1).CurrentRegion.Value
End Sub 
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#7
(06.12.2019, 13: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. Wink
Außerdem ist es nicht das Gleiche wie Copy (mit allen Formaten etc.).

Gruß Uwe
Top
#8
Hallo zusammen,

hab snb's erste Variante genommen, da ich Formate und so auch brauche.

Vielen Dank Euch beiden.
Schönes Wochenende.

Gruß,
Lutz
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste