Performance beim Ausführen.
22.11.2017 13:27:56
Georg
ich habe ein ganz allgemeine Frage: der folgende Code erzeugt einen Kalender, Starttermin wird vorab abgefragt, es folgen dann noch weitere Codezeilen.
Was ich wissen möchte, der Code für den Kalender läuft extrem langsam ab, ich kann dabei Zeile/Spalte für Zeile/Spalte zuschauen:
Ist das normal oder kann ich das i-wie beschleunigen? DANKE
With Tabelle1
Range("c4") = PlJahr
Range("c6") = StartMonat
'Kalender für Planungszeitraum erzeugen
For Monat = start To Monat
zeile = 4
ersterTag = CDate("01." & Monat & "." & jahr)
letzterTag = DateSerial(Year(ersterTag), Month(ersterTag) + 1, 0)
.Cells(zeile - 1, spalte) = ersterTag
For tag = ersterTag To letzterTag
.Cells(zeile, spalte) = tag
.Cells(zeile, spalte + 1) = Weekday(tag)
If Weekday(tag) = 1 Or Weekday(tag) = 7 Then
.Cells(zeile, spalte).Interior.Color = RGB(222, 222, 222)
.Cells(zeile, spalte + 1).Interior.Color = RGB(222, 222, 222)
End If
'Feiertage markieren
Select Case tag
Case DateSerial(Year(tag), 1, 1)
.Cells(zeile, spalte + 1).Interior.Color = vbYellow
Case DateSerial(Year(tag), 1, 6)
.Cells(zeile, spalte + 1).Interior.Color = vbYellow
Case Ostern(Year(tag)) - 2
.Cells(zeile, spalte + 1).Interior.Color = vbYellow
Case Ostern(Year(tag))
.Cells(zeile, spalte + 1).Interior.Color = vbYellow
Case Ostern(Year(tag)) + 1
.Cells(zeile, spalte + 1).Interior.Color = vbYellow
Case DateSerial(Year(tag), 5, 1)
.Cells(zeile, spalte + 1).Interior.Color = vbYellow
Case Ostern(Year(tag)) + 39
.Cells(zeile, spalte + 1).Interior.Color = vbYellow
Case Ostern(Year(tag)) + 49
.Cells(zeile, spalte + 1).Interior.Color = vbYellow
Case Ostern(Year(tag)) + 50
.Cells(zeile, spalte + 1).Interior.Color = vbYellow
Case Ostern(Year(tag)) + 60
.Cells(zeile, spalte + 1).Interior.Color = vbYellow
Case DateSerial(Year(tag), 8, 15)
.Cells(zeile, spalte + 1).Interior.Color = vbYellow
Case DateSerial(Year(tag), 10, 3)
.Cells(zeile, spalte + 1).Interior.Color = vbYellow
Case DateSerial(Year(tag), 11, 1)
.Cells(zeile, spalte + 1).Interior.Color = vbYellow
Case DateSerial(Year(tag), 12, 24)
.Cells(zeile, spalte + 1).Interior.Color = vbYellow
Case DateSerial(Year(tag), 12, 25)
.Cells(zeile, spalte + 1).Interior.Color = vbYellow
Case DateSerial(Year(tag), 12, 26)
.Cells(zeile, spalte + 1).Interior.Color = vbYellow
Case DateSerial(Year(tag), 12, 31)
.Cells(zeile, spalte + 1).Interior.Color = vbYellow
End Select
zeile = zeile + 1
Next tag
.Columns(spalte).NumberFormat = "DD.MM.YY"
.Columns(spalte + 1).NumberFormat = "DDD"
.Columns(spalte).ColumnWidth = 5.5
.Columns(spalte + 1).ColumnWidth = 4
spalte = spalte + 2
Next Monat
.Rows(3).NumberFormat = "MMM"
.Rows(3).Font.Bold = True
.Rows(3).Font.Size = 8
End With
'Formatieren
Range("w4:AT34").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlHairline
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlHairline
End With
Range("W4:AT34").Select
Selection.Font.Size = 7
With Selection.Font
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.349986266670736
End With