Forums Neueste Beiträge
 

Kann man das optimieren (copy/paste) ?

09/11/2008 - 12:45 von Heinz Müller | Report spam
Hi,

schon wieder mal ich :-)

Ich möchte ganze Zeilen von einer Tabelle in eine andere kopieren was auch wunderbar
funktioniert.
Aber vielleicht kann man den Code noch optimieren?

Ich habe insgesamt 3 Tabellen:

Hilfstabelle
Rohdaten
Geloeschte_User

Kopiert werden soll von Rohdaten nach Geloeschte_User. Aktiv ist jedoch Hilfstabelle.
Hier mal mein Codeschnippsel:


Worksheets("Hilfstabelle").Activate
With Worksheets("Hilfstabelle")

For Tzeile = 2 To Tmaxzeile

If .Cells(Hzeile, 2).Value = Worksheets("Rohdaten").Cells(Tzeile, 3).Value Then
ThisWorkbook.Worksheets("Rohdaten").Rows(Tzeile).Copy
ThisWorkbook.Worksheets("Geloeschte_User").Select
Rows(GZeile).Select
ActiveSheet.Paste
Worksheets("Hilfstabelle").Activate
GZeile = GZeile + 1
End If

Next Tzeile

End With

Eventuell kann das hier optimiert werden:

ThisWorkbook.Worksheets("Rohdaten").Rows(Tzeile).Copy
ThisWorkbook.Worksheets("Geloeschte_User").Select
Rows(GZeile).Select
ActiveSheet.Paste
Worksheets("Hilfstabelle").Activate

Danke!

Gruß
Heinz
 

Lesen sie die antworten

#1 Alexander Wolff
09/11/2008 - 13:12 | Warnen spam
Die Tastatur von Heinz Müller wurde wie folgt gedrückt:
Eventuell kann das hier optimiert werden:

ThisWorkbook.Worksheets("Rohdaten").Rows(Tzeile).Copy
ThisWorkbook.Worksheets("Geloeschte_User").Select
Rows(GZeile).Select
ActiveSheet.Paste
Worksheets("Hilfstabelle").Activate



Ja, je nach Situation sogar zweimal:

a)

ThisWorkbook.Worksheets("Rohdaten").Rows(Tzeile).Copy(_
ThisWorkbook.Worksheets("Geloeschte_User").Rows(GZeile)) 'nur eine Zeile!

(Bitte selbst in VBA Copy eingeben und F1 drücken, um evtl. Fehler durch
Nicht-Testen meinerseits zu korrigieren)

Obiger Befehl entbindet Dich schon einmal vom Blatt-Hin-und-Her.

b)

Man kann es aber noch wilder treiben (www.xxcl.de/0052.htm):

Dim A 'sollte eingangs deklariert sein
'nun in Deiner Schleife, wieder ungetestet durch mich:
A = ThisWorkbook.Worksheets("Rohdaten").Rows(Tzeile)
ThisWorkbook.Worksheets("Geloeschte_User").Rows(GZeile) = A

Hier ist der Vorteil, dass statt des langsameren Copy die schnellere
Direktzuweisung greift. Schneller vor allem deshalb, weil sie nur die Werte
übertràgt, und nicht auch Formate, Formeln, Rahmen, Schutz usw.
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2

Ähnliche fragen