Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1528to1532
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

Prüfe ob Berechnung fertig

Prüfe ob Berechnung fertig
21.12.2016 08:44:59
Rainer
Hallo Excelfreunde,
ich hatte schon ähnliches gefragt: https://www.herber.de/cgi-bin/callthread.pl?index=1530080#1530080
aber habe mich nun umentschieden. Da es offensichtlich nicht möglich ist "Datentabellen" zum seperaten Berechnen zu erstellen, habe ich die Berechnungen in ein seperates Worksheet umgelagert, welches ich mit einem Button und dem Code:
Worksheets("Tabelle2").EnableCalculation = True
Worksheets("Tabelle2").EnableCalculation = False
MsgBox "Calculation ok!"

neu berechnen lasse. ABER!
Die Berechnung dauert ein paar Sekunden, aber auf langsameren Computern auch etwas länger. Wenn der Nutzer während der Berechung irgendetwas klickt, dann unterbricht die Berechnung.
Wie kann man das verhindern? Application.OnTime erscheint mir nicht sinnvoll, da die Berechnungszeit ja abhängig vom Computer und seiner Systemauslastung ist.
Vielen Dank und viele Grüße,
Rainer

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prüfe ob Berechnung fertig
21.12.2016 09:30:01
Werner
Hallo Rainer,
was hältst du davon, während der Berechnung eine UserForm mit einem Label darauf anzeigen zu lassen? Im Label kannst du ja einen Hinweistext anzeigen lassen "Bitte warten, Berechnung läuft." Die Standardeinstellung der UserForm ist Show Modal = True. Das bedeutet, solange die Userform angezeigt wird kann in der Tabelle nicht bearbeitet werden. Wenn die Berechnung die h ist dann die Userform wieder schließen.
Ergänze deinen Code:
UserForm1.Show
Worksheets("Tabelle2").EnableCalculation = True
Worksheets("Tabelle2").EnableCalculation = False
Unload UserForm1
MsgBox "Calculation ok!"

Dann noch ins Codemodul der UserForm:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
Cancel = 1
End If
End Sub

Verhindert das Schließen der UserForm über das X
Gruß Werner
Anzeige
AW: Prüfe ob Berechnung fertig
21.12.2016 09:54:52
Rainer
Hallo Werner,
ich probiere es mal aus.
Aber ich habe es mir so gedacht:

Private Sub CommandButton1_Click() 'Starte Berechnung
Range("T107") = Int((999 * Rnd) + 1) 'Zufahlszahl in T107
update                               'update von "matrix"
End Sub
"matrix" hat viele Zeilen und Spalten, um die grässliche Bestie der Statistik zu füttern.
Am Ende (rechts unten) habe ich in Zelle JQ4011 die Formel "=coil!T107" eingefügt.

Public Sub update()
Worksheets("matrix").EnableCalculation = True
Worksheets("matrix").EnableCalculation = False
If ThisWorkbook.Sheets("matrix").Range("JQ4011") = ThisWorkbook.Sheets("coil").Range("T107")  _
Then
MsgBox "Calculation ok!"
End If
End Sub
Ich dachte mir, so sehe ich die MessageBox immer dann, wenn alle Zellen neu berechnet wurden.
Aber ich sehe sie nie?
Welchen dummen Fehler habe ich eingebaut?
Gruß,
Rainer
Anzeige
AW: Prüfe ob Berechnung fertig
21.12.2016 10:28:42
Werner
Hallo Rainer,
das musst du mit call aufrufen
Private Sub CommandButton1_Click() 'Starte Berechnung
Range("T107") = Int((999 * Rnd) + 1) 'Zufahlszahl in T107
Call update                               'update von "matrix"
End Su
Gruß Werner
AW: Prüfe ob Berechnung fertig
21.12.2016 10:52:13
Rainer
Hallo Werner,
ja so kommt die Messsage Box, aber Excel ist klüger als ich.
Obwohl die Zelle "am Ende" der Matrix steht, wird sie dennoch zuerst berechnet. Also die Zelle ist aktualisiert, aber der Rest der Berechnungnen nicht, wenn man während der Berechnung klickt und die Berechnung damit abbricht.
Kurios.
Gruß,
Rainer
Anzeige
AW: Prüfe ob Berechnung fertig mit Userform
21.12.2016 10:47:02
Rainer
Hallo Werner,
ich habe die UserForm eingefügt im VBA Editor mit deinem Quellcode.
Aber die Userform verschwindet nicht!
Auch zeigt mir Excel in der Statusleiste nicht an, dass eine Berechnung ausgeführt wird. Es findet auch tatsächlich keine statt. Es scheint, dass die Userform das Makro unterbricht.
Ich habe versucht das zu testen mit:

Public Sub update()
UserForm1.Show
Application.Wait (Now + TimeValue("0:00:10"))
Unload UserForm1
End Sub
Aber auch da verschwindet die UserForm nie! Wo liegt mein Fehler?
Gruß,
Rainer
Anzeige
AW: Prüfe ob Berechnung fertig mit Userform
21.12.2016 11:05:01
Werner
Hallo Rainer,
nicht dein Fehler sondern meiner. Wenn die UserForm im ShowModal = True aufgerufen wird, dann wird die Abarbeitung des Makros gestoppt, so lange die UserForm angezeigt wird.
Lass mal die Einstellung der UserForm auf ShowModal = True (kein Arbeiten in der Tabelle möglich) und benutze folgende Makros. Das macht jetzt bei deinem Beispielcode zwar nicht viel Sinn, weil das Makro zu schnell fertig ist, aber versuch es mal in deiner Arbeitsdatei.
In ein allgemeines Modul:
Sub Schaltfläche1_Klicken()
UserForm1.Show
End Sub
Public Sub update()
Worksheets("matrix").EnableCalculation = True
Worksheets("matrix").EnableCalculation = False
Unload UserForm1
If ThisWorkbook.Sheets("matrix").Range("JQ4011") = ThisWorkbook.Sheets("coil").Range("T107") _
Then
MsgBox "Calculation ok!"
End If
End Sub
Ins Modul der UserForm:
Private Sub UserForm_Activate()
Range("T107") = Int((999 * Rnd) + 1)
Call update
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
Cancel = 1
End If
End Sub
Gruß Werner
Anzeige
AW: Prüfe ob Berechnung fertig mit Userform
22.12.2016 03:59:32
Rainer
Hallo Werner,
vielen Dank, so geht es.
Nut bleibt die UserForm bei mir leer. Konnte ich aber verbessern mit:
'Ins Modul der UserForm:
Private Sub UserForm_Activate()
DoEvents
Range("T107") = Int((999 * Rnd) + 1)
Call update
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
Cancel = 1
End If
End Sub
Nochmal Danke und schöne Weihnachten!
Rainer
AW: Gerne u. Danke für die Rückmeldung.
22.12.2016 08:57:20
Werner
Hallo Rainer,
dir auch schöne Festtage.
Gruß Werner

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige