ich kopiere mir derzeit mit Beispiel1.Range("B2").Value = Beispiel2.Cells(i, 9).Value in einer Schleife etwa 1000 Werte.
Da Excel ja anscheinend jedes mal das eine Worksheet öffnet, den Kram reinkopiert, wieder schließt etc. pp... dauert das ganze sehr sehr lange (etwa 1 Minute).
Meine Idee war jetzt, die Werte, die ich von dem einen Worksheet in das andere Worksheet kopieren will in ein Array einzulesen und dann praktisch im Arbeitsspeicher den Kram rüberschreibe, meine Aktion ausführe und die Werte dann wieder übergebe.
Mein Kopier-Code sieht derzeit so aus (gekürzt):
For i = 3 To Beispiel2.Cells(Rows.Count, 9).End(xlUp).Row
wsBeispiel1.Range("B2").Value = wsBeispiel2.Cells(i, 9).Value
wsBeispiel1.Range("B3").Value = wsBeispiel2.Range("A17").Value
wsMustertabelleMetafile.Range("B4").Value = wsBeispiel1.Range("Q3").Value
sVersion = DateValue(wsDateneingabe_Dashboard.Range("Q4").Value)
wsBeispiel1.Range("B5").Value = Format(sVersion, "'YYYY-MM-DD")
Call Fuktion
Next i
Jetzt ist die Frage, wie ich das ganze realisiere.
Habe dazu diesen Code gefunden.
Sub bspArray()
Dim varArr As Variant
Dim arr1, arr2
Dim dteStart As Date, dteEnde As Date
Dim appendedText As String
appendedText = "123"
Application.ScreenUpdating = False
dteStart = Timer
varArr = Range(Cells(1, 1), Cells(100, 100))
For arr1 = 1 To 100
For arr2 = 1 To 100
varArr(arr1, arr2) = varArr(arr1, arr2) & appendedText
Next arr2
Next arr1
Range(Cells(1, 1), Cells(100, 100)) = varArr
dteEnde = Timer
Application.ScreenUpdating = True
Debug.Print "Bearbeitungszeit: " & Format _
(dteEnde - dteStart, "0.00") & " Sekunden..."
End Sub
Allerdings tue ich mich grade etwas schwer die einzelnen Worksheets im Arbeitsspeicher zu lassen und nicht, wie ich es sonst getan habe, zu öffnen.
Vielen Dank im Voraus
Peter