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