Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Daten SCHNELL von Tabelleblatt A -> B transfer. | Herbers Excel-Forum

Forumthread: Daten SCHNELL von Tabelleblatt A -> B transfer.

Daten SCHNELL von Tabelleblatt A -> B transfer.
20.09.2008 12:12:48
kgurr

Hallo,
ich möchte aus einem Tabellenblatt A die Inhalte verschiedene Ranges in ein Tabellenblatt kopieren. Im Tabellenblatt A sind die Spalten verstreut, im Tabellenblatt sind sie als Block vorhanden.
Ich habe bereits eine Prozedur, die mir zu langsam - vor allem duch das schreiben in die Zellen ist. Nun suche ich nach einer Lösung, mit der ich die geamten Inhalte als Block in die Tabelle kopieren kann. Ich habe auch schon einen Lösungsansatz, allerdings lässt sich die Matrix nicht in den Range kopieren.
Im Klassenmodul "cColStruc" folgender Code:
Public sImpCol1 As String
Public sImpCol2 As String
Public sImpCol3 As String


Sub SpaltenInBlockTransfer()
Dim i As Integer
' Spaltenvariablen
Dim iColStrt As Integer
Dim iColName As Integer
Dim iColShort As Integer
' Matrixdimension
Dim iDThoehe As Integer
Dim iDTbreit As Integer
' Matrixvariablen
Dim rowItem As cColStruc
Dim transferMatrix As Collection
Set transferMatrix = New Collection
' Zu transferierende Spalten definieren
iColStrt = 5
iColName = 10
iColShort = 15
' Matrix füllen
Worksheets("A").Select
For i = 11 To 25
Set rowItem = New cColStruc
With rowItem
.sImpCol1 = Cells(i, iColStrt).Value
.sImpCol2 = Cells(i, iColName).Value
.sImpCol3 = Cells(i, iColShort).Value
End With
transferMatrix.Add rowItem
Set rowItem = Nothing
Next i
' Dimension der Matrix
iDThoehe = transferMatrix.Count
iDTbreit = 3
' Matrix in Tabelle schreiben
Worksheets("B").Select
Range("C20:E34").Value = transferMatrix
End Sub


Der Fehler der auftaucht ist "Anwendungs oder objektdefinierter Fehler"
Wer hat mir eine Lösung wie ich die ganze Matrix als Block in den Range kopieren kann? Das einkopieren über einzelne Zellen wäre kein Thema, doch das ist halt langsam ...
Ich bin mir auch noch nicht sicher, wie man "richtig" die Klasse definiert. Ich glaube das ist nicht ganz korrekt - vielleicht liegt es ja daran ... ?
Danke im Vorauss für die Unterstützung.
kgurr

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten SCHNELL von Tabelleblatt A -> B transfer.
20.09.2008 14:19:46
Reinhard
Hi Kgurr,


Sub tt()
Worksheets(1).Range("E11:E25,J11:j25,o11:o25").Copy _
Destination:=Worksheets(2).Range("C20")
End Sub


Gruß
Reinhard

AW: Daten SCHNELL von Tabelleblatt A -> B transfer.
20.09.2008 15:25:33
Gerd L
Hallo kgurr,
ein paar Settings mehr. Aber eine Klasse ist für diesen Zweck, unter dem Aspekt Geschwindigkeit zumindest, nicht notwendig. Denn Klassen sind langsam. Es sei denn, es geht dir nur ums Dazulernen.


Sub test()
Dim rngTrans As Range, rngZiel As Range
With ThisWorkbook.Worksheets("A")
Set rngTrans = Application.Intersect(.Range(.Rows(11), .Rows(25)), Union(.Columns(5),  _
.Columns(10), .Columns(25)))
End With
Set rngZiel = ThisWorkbook.Worksheets("B").Range("C20:E34")
rngTrans.Copy
rngZiel.PasteSpecial xlPasteValues
Application.CutCopyMode = False
End Sub


Gruß Gerd

Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

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