Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
888to892
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
888to892
888to892
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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

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

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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige