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

Ausgedruckt am: 19.03.2024 um 08:03 Uhr

Mitglied: Iwan
Iwan 24.08.2009 um 09:06:21 Uhr
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?
Mitglied: wydy
wydy 24.08.2009 um 09:24:35 Uhr
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
Mitglied: Iwan
Iwan 24.08.2009 um 09:40:30 Uhr
Goto Top
hmmm bei mir läuft es in ~1 Sekunde durch
welches Office verwendest und welcher Patchstand?
Mitglied: wydy
wydy 24.08.2009 um 10:40:34 Uhr
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.
Mitglied: wydy
wydy 24.08.2009 um 10:50:47 Uhr
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
Mitglied: Iwan
Iwan 24.08.2009 um 11:27:27 Uhr
Goto Top
wie sagte schon mein damaliger IT-Leiter immer:
"Reboot tut immer gut" face-wink