VBA Code schneller machen
16.04.2016 10:17:51
Heli
habe eine Frage zu VBA Code schneller machen:
Aus einen Tabellenblatt füge ich Daten in meine Active.Sheet ein: ca. 110.000 Zeilen
mit drei Datenspalten. Dauer 2 Sec.
Danach wird eine eine Loop durchlaufen die diese Daten nach PEN = Nummer für Daten,
tag_dat = Tag, stunde_dat = Stunde, und wert_dat = Wert in eine wert_dat schreibt.
das Dauer mir zu lange ca. 30 sec.
Frage gibt es einen Weg da schneller zu machen und Wie ?
Haben den Code mal unten eingefügt.
Das ist nur der wesentliche Teil, Also:
Daten aus Tabellle einlesen in wert_dat und dann immer wieder aufdrösseln in die einzelnen von mir gebrauchten Wertepaarungen.
Danke im Voraus !!
CODE:
'daten einlesen
zeile = -1
pen = 0
Do
zeile = zeile + 1
Offset = anzahl + 5 + zeile
pen_dat = Cells(Offset, 1)
tag_dat = Day(Cells(Offset, 2))
stunde_dat = Hour(Cells(Offset, 2))
wert_dat = Cells(Offset, 3)
wert(pen_dat, tag_dat, stunde_dat) = wert_dat
Loop Until pen_dat = ""
'varMeinArray = Range("A65:D:D").Value
'Sheets("Tabelle2").Range("A65:D:D") = varMeinArray
'Tabellenblatt auswählen
blatt = Right(Str(gastag_faktor), Len(Str(gastag_faktor)) - 1)
Sheets(blatt).Select
'If Cells(5, 1) > 0 Then
'Text = "Blatt " + blatt + " wurde bereits erzeugt" + Chr$(13) + "Zum nochmaligen erzeugen Datum in Zelle A5 löschen und Bericht nochmal auf 'Tabelle1' erzeugen" + Chr$(13) + "Ausserdem bereits erzeugte Datei " + blatt + " löschen" + Chr$(13) + Chr$(13) + "ACHTUNG Daten werden dann überschrieben"
'MsgBox (Text)
' GoTo ende
'End If
'Daten füllen
'cells(Zeile, Spalte)
Cells(5, 1) = gastag
'Kavernen Drücke+Temp
zeile = 9
spalte = 0
x = Day(gastag)
For h = 6 To 23
For p = 0 To 7
Cells(zeile, 2 + spalte) = wert(p, x, h)
spalte = spalte + 1
Next p
spalte = 0
zeile = zeile + 1
Next h
x = Day(gastag + 1)
For h = 0 To 5
For p = 0 To 7
Cells(zeile, 2 + spalte) = wert(p, x, h)
spalte = spalte + 1
Next p
spalte = 0
zeile = zeile + 1
Next h
'zähler
'OGE Ein
zeile = 9
spalte = 0
x = Day(gastag)
For h = 6 To 23
For p = 29 To 32
Cells(zeile, 16 + spalte) = wert(p, x, h)
spalte = spalte + 1
Next p
spalte = 0
zeile = zeile + 1
Next h
x = Day(gastag + 1)
For h = 0 To 6
For p = 29 To 32
Cells(zeile, 16 + spalte) = wert(p, x, h)
spalte = spalte + 1
Next p
spalte = 0
zeile = zeile + 1
Next h
'TGNW Ein
zeile = 9
spalte = 0
x = Day(gastag)
For h = 6 To 23
For p = 33 To 36
Cells(zeile, 27 + spalte) = wert(p, x, h)
spalte = spalte + 1
Next p
spalte = 0
zeile = zeile + 1
Next h