Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1488to1492
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Rechenoperation sehr langsam in Userform

Rechenoperation sehr langsam in Userform
22.04.2016 14:58:54
Alex
Guten Tag zusammen, ich hätte mal wieder gerne ein Problem weniger!
ich rufe durch einen Button eine Userform auf mit der Möglichkeit meine Werte zurückzusetzen oder die (vorher) eingegebenen Werte zu übernehmen und mit diesen eine Berechnung neu zu rechnen. Bis hierhin alles tutto bene, funktioniert!
Jetzt ist es so, dass ich gezwungen bin, mehrere Newtoniterationen zu berechnen. Als Makro rödelt der das innerhalb kürzester Zeit herrunter, wenn ich das über eine kleine Schaltfläche mache.
Wenn ich dies jedoch in die CMD Box implementiere (den Code, nicht das Makro) in meiner Userform, dauert die Berechnung 15 Minuten (wenn er nicht einfach komplett abschmiert. Userform ist ganz mickrig gehalten, mit Übernehmen und Abbruch Knöpkes - mehr nicht):
Habe die Formeln so weit wie möglich zusammengestaucht (ohne select und activate...) und es wird trotzdem nicht "zügiger".
Hat da jemand ne Idee ob das fixer geht und wenn ja wie und/oder ob ich einen Fehler habe oder mach ich kompletten Unfug (alles ist möglich)?! Wäre dankbar für jede Hilfe
Was mich halt sehr wundert ist der Affenzahn mit dem das alles berechnet wird, sobald ich das ohne die Userform über ne Schaltfläche mache...
Der Code sieht folgendermaßen aus:
---------
Private Sub CommandButton1_Click()
'Application.ScreenUpdating = False
Sheets("delta p von Zentrale bis Ring").Select
Range("L28").GoalSeek Goal:=0, ChangingCell:=Range("M22")
Range("M44").GoalSeek Goal:=0, ChangingCell:=Range("M44")
Range("L71").GoalSeek Goal:=0, ChangingCell:=Range("M65")
Range("L93").GoalSeek Goal:=0, ChangingCell:=Range("M87")
Range("L116").GoalSeek Goal:=0, ChangingCell:=Range("M110")
Range("R116").GoalSeek Goal:=0, ChangingCell:=Range("S110")
Range("R140").GoalSeek Goal:=0, ChangingCell:=Range("S134")
Range("L165").GoalSeek Goal:=0, ChangingCell:=Range("M159")
Sheets("Druckverlust Verbraucher VA009 ").Select
Range("L28").GoalSeek Goal:=0, ChangingCell:=Range("M22")
Range("L50").GoalSeek Goal:=0, ChangingCell:=Range("M44")
Range("L71").GoalSeek Goal:=0, ChangingCell:=Range("M65")
Range("L93").GoalSeek Goal:=0, ChangingCell:=Range("M87")
Sheets("Mengenaufteilung").Select
Range("J12").GoalSeek Goal:=0, ChangingCell:=Range("H4")
Range("P12").GoalSeek Goal:=0, ChangingCell:=Range("O4")
Range("V12").GoalSeek Goal:=0, ChangingCell:=Range("U4")
Range("AB12").GoalSeek Goal:=0, ChangingCell:=Range("AA4")
Range("AH12").GoalSeek Goal:=0, ChangingCell:=Range("AG4")
Range("J34").GoalSeek Goal:=0, ChangingCell:=Range("H25")
Range("P34").GoalSeek Goal:=0, ChangingCell:=Range("O25")
Range("V34").GoalSeek Goal:=0, ChangingCell:=Range("U25")
Range("AB34").GoalSeek Goal:=0, ChangingCell:=Range("AA25")
Range("AH34").GoalSeek Goal:=0, ChangingCell:=Range("AG25")
Range("AN34").GoalSeek Goal:=0, ChangingCell:=Range("AM25")
Sheets("Schema").Select
'Application.ScreenUpdating = True
End Sub

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Rechenoperation sehr langsam in Userform
25.04.2016 07:48:38
fcs
Hallo Alex,
wenn das Makro zur Berechnung der Iterationen ohne Userform schnell ist, dann liegt das Problem in dem Code den du im Userform verbaut hast.
ich rufe durch einen Button eine Userform auf mit der Möglichkeit meine Werte zurückzusetzen oder die (vorher) eingegebenen Werte zu übernehmen und mit diesen eine Berechnung neu zu rechnen. Bis hierhin alles tutto bene, funktioniert!

Vermutlich werden durch das Zurücksetzen bzw. Übernehmen der Werte umfangreiche Berechnungen losgetreten oder Ereignismakros gestartet. Insbesondere wenn dabei Werte in viele einzelne Zellen eingetragen werden dann werden immer wieder Neuberechnungen der Datei gestartet.
Während dieser Phase des Makros solltest du die entsprechenden Einstellungen anpassen, um die Makroausführung zu beschleunigen.
Sub aaTest()
Dim StatusCalc As Long
'Makrobremsen lösen
With Application
.EnableEvents = False
StatusCalc = .Application.Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
'Hier dann der Code für Zurückstzen bzw. Übernehmen von Daten
Activeworkbook.Calculate
'Makrobremsen zurücksetzen
With Application
.EnableEvents = True
.Calculation = StatusCalc
.ScreenUpdating = True
End With
End Sub

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige