|  
                                             
	Hallo Robert! Also habe mal deinen Code zusammengefasst. Da ich nicht die Datengrundlage wie du habe, konnte ich keinen Durchlauf mit 10000 Schleifen machen. :-)  Kann also zur Laufzeit nichts sagen. Müsstest du halt ggf. mal selber testen. 
	Zum Code noch. 
	2 Variablen habe ich umbenannt - gab da bei mir Probleme. Die Namen Month und Day sind eigentlich Methodennamen und schlecht für Variablen. Habe sie deshalb in monat und tag umbenannt. Deine Ifs am Anfang such ja eigentlich nur den Monat in Abhängigkeit vom laufenden Tag (jday) und dann noch den Tag im Monat. Habe ich durch eine Berechnung ersetzt. Wobei dein/mein Code wohl nur funtkioniert, wenn kein Schaltjahr ist - da wäre der Februar ja 29 TAge lang. 
	Dann habe ich dir noch was in grüne (Kommentare) reingeschrieben. Da sind eine Variable und 2 Rückgaben an Zellen m.E. zuviel. Außer du greifst da später nochmal drauf zu. Die könnte auch weg. Dann wären etliche Vergleiche (zum Jahresende hin) und 2 Rückgaben schonmal weg. Ob meine Berechnung die selbe Zeit kosten oder langsamer sind, weiß ich nicht. Für mehr Optimierungen, müsste man ggf. den ganzen Code sehen und schauen, was noch weg könnte. 
	Gruß 
 For i = 1 To leZeile - 1
 With Workbooks(1).Worksheets(sheetname)
    tmin = .Cells(i + 1, 9)
    tmax = .Cells(i + 1, 10)
    jday = .Cells(i + 1, 5)
    If tmin = 9999 Or tmax = 9999 Then
        tmean = 9999
        Else: tmean = (tmin + tmax) / 2
    End If
    .Cells(i + 1, 11) = tmean
    
    If month_col = 0 Then
    ' berechnet dir den Tag und den Monat ohne die vielen if - variablenname war suboptimal
        If jday > 0 And jday < 366 Then
            monat = Month((DateAdd("d", jday - 1, "01.01.2015")))
            tag = CDate(DateAdd("d", jday - 1, "01.01.2015")) - DateSerial(2015, monat, 0)
        Else
            MsgBox "JDAY not valid"
        End If
        
        'ist daa Schreiben in die Zellen hier wirklich notwendig?? wird ja nur für die Variable datum benutzt.
        'wäre nicht auch möglich, datum wegzulassen und die nächsten 4 Codezeilen durch die hier zu ersetzen
        ' .Cells(i + 1, 4).Value = tag & "." & monat
        
        .Cells(i + 1, 1).Value = tag
        .Cells(i + 1, 2).Value = monat
    End If
    datum = .Cells(i + 1, 1).Value & "." & .Cells(i + 1, 2).Value
    .Cells(i + 1, 4).Value = datum
        ' also bis hier könnte mit der Zeile im Kommentar oben alles weg - end if aber lassen
    
    If .Cells(i + 1, 8) = 9999 Then
        If i > 1 Then
            If .Cells(i + 1, 7) < 9999 Then
                pseudo_snow = .Cells(i + 1, 7) - .Cells(i, 7)
                If pseudo_snow >= 0 Then
                    .Cells(i, 8) = pseudo_snow
                Else: .Cells(i, 8) = 0
                End If
            End If
        End If
    End If
  End With
	  
     |