Makro beschleunigen(ohne Select Case?)
28.09.2021 13:00:14
ugur
ich hatte bereits in diesem Thread https://www.herber.de/forum/messages/1849505.html einen Beitrag erstellt, daraus ergab sich, dass das von mir benötigte Makro zu umständlich ist. Es erstellt Formeln, die es hinterher wieder überschreibt. Aus diesem Grund braucht das Makro sehr Lange wenn die Mappe viele Zeilen hat (die Originaldatei hat 12.000 Zeilen). Lässt sich das Makro so ändern, dass die Formeln keine SELECT CASE mehr enthalten und diese Formeln auch nicht erneut überschrieben werden? Dies würde das Makro deutlich beschleunigen. oder gibt es einen allgemein besseren Ansatz dafür? Die Beispieldatei ist hier abgelegt: https://www.herber.de/bbs/user/148312.xlsx
Vielen Dank im voraus :)
und hier ist das Makro:
Sub FZ_berechnen()
GetMoreSpeed (True)
Range("AT1").Value = "alte Abrufe"
Range("AU1").Value = "neue Abrufe"
Range("AV1").Value = "alte FZ"
Range("AW1").Value = "neue FZ"
Range("AX1").Value = "Differenz"
lnglast = Cells(Rows.Count, 1).End(xlUp).Row
For Zeile = 3 To lnglast
Select Case Cells(2, 34).Value
Case Is = 0
Cells(2, 46).Value = "0"
Cells(Zeile, 47).Value = "0"
Case Is > 0
Cells(2, 34).Copy
Cells(2, 46).Value = "0"
Cells(2, 47).PasteSpecial
Cells(2, 48) = "0"
Range("AW2").FormulaR1C1 = "=RC[-13]+RC[-15]"
Case Is 0,VLOOKUP(RC[-13],C[-13]:C[-12],1,FALSE),0)"
'wenn neue Abrufe
Select Case Cells(Zeile, 47).Value
Case Is >= 0
Cells(Zeile, 49).FormulaR1C1 = "=IF(AND(R[-1]C[-48]=RC[-48]),IF(RC[-3]0,VLOOKUP(RC[-13],C[-13]:C[-12],1,FALSE),0)"
GetMoreSpeed (False)
End Sub
Public Static
Sub GetMoreSpeed(Optional ByVal Modus As Boolean = True)
Dim intCalculation As Integer
If Modus = True Then intCalculation = Application.Calculation
With Application
.ScreenUpdating = Not Modus
.EnableEvents = Not Modus
.Calculation = IIf(Modus = True, xlManual, intCalculation)
.Cursor = IIf(Modus = True, 2, -4143)
End With
End Sub