Ich habe mir das jetzt selbst zusammengebastelt. Nicht schön, aber selten.
Die Laufzeit ist bei 8760 Zeilen etwas lang. Hat jemand eine Idee wie man da anders/besser herangehen kann?
Ich habe absolut keine Ahnung vom Programmieren und bin erstaunt, dass es beim ersten Versuch geklappt hat.
Innerhalb der Speicherstand-Zellen steht eine aufwendige Formel (Deshalb die Ausgabe in einer gesonderten Spalte). Macht es Sinn diese auch in Code umzuschreiben oder sollte ich das so belassen?
Sub Speicher_Test()
Worksheets("Heizstab").Activate
Dim Kessel As Long 'Range("B50")
Dim Speichermax As Long 'Range("B51")
Dim Speichermin As Long 'Range("B52")
Kessel = Range("B50").Value
Speichermax = Range("B51").Value
Speichermin = Range("B52").Value
ActiveCell = Range("AB2") 'Geht das auch allgemeiner? So das er jede Spalte mit dem Namen Speicherverhalten anwählt 'und dort als ActiveCell die zweite Zeile nutzt?
Do Until ActiveCell.Value = "" 'Führe folgende statements aus bis eine leere Zelle erreicht wird
If ActiveCell.Value <= Speichermin Then 'Abfrage der Bedingung Speicherstand <= Speichermin
Do Until (Speichermax - ActiveCell.Value) < Kessel 'Führe folgende statements so lange aus bis Differenz von
'Speichermax-Speicherstand < Kessel.
ActiveCell.Offset(0, 4).Value = ActiveCell.Offset(0, 4).Value + Kessel 'Wenn die Speicherkapazität > Kesselleistung, dann führe Kesselnennleistung hinzu.
ActiveCell.Offset(1, 0).Select 'Speichere den Wert 4 Spalten neben der aktiven Zelle ab.
Loop
Else
ActiveCell.Offset(1, 0).Select 'Sonst eine Zeile weiter springen
End If 'Ende 1. Wenn-Abfrage
If ActiveCell.Offset(-1, 4).Value > 0 Then 'Ausgabe von dem Rest zu Speichermax
ActiveCell.Offset(0, 4).Value = ActiveCell.Offset(0, 4).Value + (Speichermax - ActiveCell.Value)
Else 'Speichere den Wert 4 Spalten neben der aktiven Zelle ab.
ActiveCell.Offset(1, 0).Select 'Sonst eine Zeile weiter springen
End If 'Ende 1. Wenn-Abfrage
Loop 'Ende 1. Schleife
End Sub
|