wydy
Goto Top

Daten in Zellen eintragen extrem langsam

Daten von einem Jahr in Zellen eintragen extrem langsam

Moin Leute,
ich habe vorhin eine Funktion gebastelt. in welcher man ein Jahr eingeben kann und im nächsten Register wird dann von dem Jahr, jeder Tag und jede Kalenderwoche aufgelistet. Das sieht dann ungefähr so aus:

KW Tag
1 01.01.2009
1 02.01.2009
1 03.01.2009
2 04.01.2009
51 31.12.2009

Das ganze funktioniert auch ohne Probleme. Jedoch dauert es ungefähr 2 Minuten, bis alle Daten aufgelistet sind. Der PC selbst ist nicht langsam und die Funktion ist meines Erachtens auch nicht kompliziert. Wiso ist das ganze so langsam? Kann man den Prozess irgendwie schneller machen? Ich kann den Benutzer ja nicht jedesmal 2 Minuten warten lassen, nur um ein paar Daten zu ändern.

Hier noch mein Quellcode:
    'Alle Daten auflisten  
    activDate = "01.01." & Jahr  
    nextYear = "01.01." & Jahr + 1  
    count = 5
    Do While activDate < nextYear
        'Datum eintragen  
        ActiveSheet.Cells(count, 2).Value = activDate
        
        'Kalenderwoche berechnen  
        tmp = DateSerial(Year(activDate + (8 - Weekday(activDate)) Mod 7 - 3), 1, 1)
        KalenderWoche = (activDate - tmp - 3 + (Weekday(tmp) + 1) Mod 7) \ 7 + 1
        ActiveSheet.Cells(count, 1).Value = KalenderWoche
        
        activDate = activDate + 1
        count = count + 1
    Loop

Content-Key: 123322

Url: https://administrator.de/contentid/123322

Printed on: April 23, 2024 at 15:04 o'clock

Member: Iwan
Iwan Aug 24, 2009 at 07:06:21 (UTC)
Goto Top
hallo,

ich habe das gerade bei mir probiert (Excel 2003 SP3) und da läuft es bei mir in einen Runtime-Error rein
kannst du mal den ganzen Code posten?
Member: wydy
wydy Aug 24, 2009 at 07:24:35 (UTC)
Goto Top
Private Sub buttonBerechnen_Click()
    Dim Jahr As Integer
    Dim count As Integer
    Dim activDate As Date
    Dim nextYear As Date
    Dim tmp As Double
    
    Jahr = Cells(5, 2).Value

    Sheets("Daten").Select  
    
    'Alle Daten auflisten  
    activDate = "31.12." & Jahr - 1  
    nextYear = "01.01." & Jahr + 1  
    count = 5
    Do While activDate < nextYear
        'Datum eintragen  
        ActiveSheet.Cells(count, 2).Value = activDate
        
        'Kalenderwoche berechnen  
        tmp = DateSerial(Year(activDate + (8 - Weekday(activDate)) Mod 7 - 3), 1, 1)
        KalenderWoche = (activDate - tmp - 3 + (Weekday(tmp) + 1) Mod 7) \ 7 + 1
        ActiveSheet.Cells(count, 1).Value = KalenderWoche
        
        activDate = activDate + 1
        count = count + 1
    Loop
End Sub
Member: Iwan
Iwan Aug 24, 2009 at 07:40:30 (UTC)
Goto Top
hmmm bei mir läuft es in ~1 Sekunde durch
welches Office verwendest und welcher Patchstand?
Member: wydy
wydy Aug 24, 2009 at 08:40:34 (UTC)
Goto Top
Ich verwende Office 2003 (11.6560.6568) SP2

Wenn ich nebenbei den Taskmanager laufen lasse ist die CPU Auslastung andauernd bei ca 50%.

Der PC selbst hat 3.19 GHz und 1GB Ram, daran kann es also nicht liegen.
Member: wydy
wydy Aug 24, 2009 at 08:50:47 (UTC)
Goto Top
Ich habe jetzt den PC mal neugestartet und das ganze Exceldokument neu erstellt. Jetzt läuft auch bei mir das ganze in 1-2 Sekunden durch.

Warscheinlich habe ich vorher irgendeinen Fehler gemacht und den Speicher überfüllt.

Trotzdem danke für die Hilfe face-smile
Member: Iwan
Iwan Aug 24, 2009 at 09:27:27 (UTC)
Goto Top
wie sagte schon mein damaliger IT-Leiter immer:
"Reboot tut immer gut" face-wink