Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1008to1012
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
Inhaltsverzeichnis

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

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

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

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige