Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Schnelles kopieren

Forumthread: Schnelles kopieren

Schnelles kopieren
24.07.2007 20:42:17
Silk
Hallo zusammen,
also ich habe folgendes Problem:
Ich habe eine mittlerweile sehr grosses Tabellenblatt mit ca. 150 Zeilen und 200 Spalten. Nun wollte auf einem neuen Blatt eine Vergleichsmöglichkeit für den User schaffen, d.h.ich habe 2 ComboBoxen auf das Blatt gelegt, damit der User aus den 150 Artikeln jeweils einen zum Vergleich auswählen kann. Diese sollen dann von aus dem ursprünglichen Blatt auf die Vergleichsseite kopiert werden. Mein Problem ist, das die VBA Routine extrem (!) langsam ist (und das liegt nicht an der Rechner-Performance).
Meine Routine sieht so aus:

Set wsSource = ActiveWorkbook.Worksheets("Artikel")
Worksheets.Application.ScreenUpdating = False
For i = 2 To wsSource.Cells(3, Columns.Count).End(xlToLeft).Column
Cells(i + 3, 4) = wsSource.Cells(3, i)
Next
Worksheets.Application.ScreenUpdating = True


Die Schleife läuft ca 1 Minute, was natürlich für den Benutzer nicht akzeptabel ist. Wie man sieht sollen die Informationen aus den Spalten nun in den Zeilen (also untereinander) landen.
Ich habe zum Test auch schon mal folgendes probiert:


wsSource.Range(wsSource.Cells(3, 2), wsSource.Cells(3, 12)).Copy (Range(Cells(5, 4), Cells(15,  _
4)))


Erstmal mit einem kleineren Bereich, aber das scheint so nicht zu funktionieren.
Weiss jemand von euch, wie man das Ganze beschleunigen kann?
Vielen Dank
Gruß
Karsten

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schnelles kopieren
24.07.2007 21:11:28
Ramses
Hallo
"...Die Schleife läuft ca 1 Minute, ..:"
kann ich mir nicht vorstellen, deine Schleife arbeitet maximal 254 Spalten ab.
Das merkst du gar nicht.
Wenn allerdings viele Formeln drin sind, dann schalte am Anfang der Schleife die Berechnung ab
Application.Calculation = xlManual
und am Ende wieder auf
Application.Calculation = xlAutomatic
Dein unteres Codebeispiel funktioniert grundsätzlich, allerdings würde ich dies aus Gründen der Übersichtlichkeit so schreiben

Sub test()
Dim wsSource As Worksheet
Set wsSource = Worksheets("Sheet1")
With wsSource
.Range(.Cells(1, 1), .Cells(1, 5)).Copy .Range(.Cells(5, 1), .Cells(5, 4))
End With
End Sub


Gruss Rainer

Anzeige
AW: Schnelles kopieren
24.07.2007 21:58:00
Silk
Hallo,
also

Application.Calculation = xlManual


bringt schon wirklich enorm was. Bin jetzt bei unter 1 Sekunde. In der Tat beinhaltet die Tabelle sehr viele Formeln. Die Sache mit dem Copy klappt allerdings nicht, da er wohl keine Zeile / Spalte Konvertierung kann. Ich werde nochmal ein bisschen weiter experimentieren.
Auf jeden Fall vielen Dank
Karsten

Anzeige
AW: Schnelles kopieren
24.07.2007 21:24:39
Uduuh
Hallo,
Hallo, ich würde das erst mal in ein A rray einlesen und dann kopieren.

Sub tt()
Dim vntTmp, wsSource As Worksheet
Set wsSource = ActiveWorkbook.Worksheets("Artikel")
Worksheets.Application.ScreenUpdating = False
With wsSource
vntTmp = .Range(.Cells(3, 2), .Cells(3, Columns.Count).End(xlToLeft))
End With
Range(Cells(5, 4), Cells(UBound(vntTmp, 2) + 4, 4)) = WorksheetFunction.Transpose(vntTmp)
Worksheets.Application.ScreenUpdating = True
End Sub


Gruß aus’m Pott
Udo

Anzeige
AW: Schnelles kopieren
24.07.2007 22:06:22
Ramses
Hallo Udo
also die zwingende Verwendung eines Arrays sehe ich bei dieser Aktion ehrlich gesagt nicht

Sub test()
Dim wsSource As Worksheet
Set wsSource = Worksheets("Sheet1")
With wsSource
.Range(.Cells(1, 1), .Cells(1, 5)).Copy
.Cells(5, 1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False,  _
Transpose:=True
End With
End Sub


Gruss Rainer

Anzeige
AW: Schnelles kopieren
24.07.2007 22:18:00
Uduuh
Hallo Rainer,
zwingend ist das wirklich nicht.
Wie gesagt: Ich würde.
Gruß aus’m Pott
Udo

;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige