Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antworten Top
#2
(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
Antworten 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
Antworten 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
Antworten 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
Antworten 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
Antworten Top
#7
(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. Wink
Außerdem ist es nicht das Gleiche wie Copy (mit allen Formaten etc.).

Gruß Uwe
Antworten 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
Antworten Top


Gehe zu:


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