Fenster während der Wartezeit anzeigen?

Hallo.

Ich möchte gerne bei meinen Programm, wenn der Rechner arbeitet (Er aktualisiert mit Sverweis die ganzen daten, un das dauert ca. 1,5 Minuten) ein Fenster am Bildschirm anzeigen, wo steht bitte warten, oder man sieht eine Statusanzeige, wie weit er ist (wenn das einfach ginge, was ich nicht glaube)
Das Fenster soll, nachdem er fertig ist automatisch verschwinden, wie macht man das ?

Danke nochmal an allen (vor allem Reinhard für seine Unzähligen Hilfe’n,) die mir immer wieder mit Rat und Tad zur Seite stehen.

Ich möchte gerne bei meinen Programm, wenn der Rechner
arbeitet (Er aktualisiert mit Sverweis die ganzen daten, un
das dauert ca. 1,5 Minuten) ein Fenster am Bildschirm
anzeigen, wo steht bitte warten, oder man sieht eine
Statusanzeige, wie weit er ist (wenn das einfach ginge, was
ich nicht glaube)
Das Fenster soll, nachdem er fertig ist automatisch
verschwinden, wie macht man das ?

Hi Anton,
prinzipiell ist eine Statusanzeige oder die zeitlich begrenzte Anzeige einer MsgBox kein Problem.
Nur, das Makro was das machen soll wie/wodurch soll es gestartet werden?
Wenn ich deine Anfrage richtig interpretiere gibst du in eine Zelle irgendwas ein und dann durch viele Sverweise dauert es 1,5 Minuten bis das durchgerechnet ist!?
Mir kommt das sehr lange vor, um wieviele Zeilen/Spalten geht es ?

Abhilfe wäre, du schaltest die Berechnung auf manuell, änderst nach Wunsch die Werte in der Tabelle, startest dann ein Makro, dann könnte man sowa sbasteln daß in der Statusleiste oder in einer MsgBox angezeigt wird „Berechne Zelle x/12000“ usw.

Grundproblem ist, wenn Excel rechnet hat man m.E. keinen Zugriff auf die Daten wieviele Zellen berechnet werden müssen und welche gerade berchnet wird.

Gruß
Reinhard

Ich möchte gerne bei meinen Programm, wenn der Rechner
arbeitet (Er aktualisiert mit Sverweis die ganzen daten, un
das dauert ca. 1,5 Minuten) ein Fenster am Bildschirm
anzeigen, wo steht bitte warten, oder man sieht eine
Statusanzeige, wie weit er ist (wenn das einfach ginge, was
ich nicht glaube)
Das Fenster soll, nachdem er fertig ist automatisch
verschwinden, wie macht man das ?

Hallo Anton,
danke für das Feedback :smile:

Ein Weg wäre, du stellst die Berechnung unter Optionen auf „manuell“.
„F9“ startet dann ein Makro was die Zellen berechnet und eine Fortschrittsanzeige in einem Fenster anzeigt.

Im Beispiel wird davon ausgegangen dass die Sverweise in Spalte B stehen und in Spalte A noch andere Formeln.
Je nachdem welche der drei Makros „Berechne, Berechne2, Berechne3“ du im Makro „Einmalig“ auf die taste F9 legst, werden entweder alle benutzen Zellen berechnet, nur Zellen mit Formeln (macht am meisten Sinn) oder nur die Zellen in Spalte B.

Nachfolgend der Code. Benötigt wird eine Userform mit einem ProzessBarSteuerelement und 2 TextBoxen, so wie hier in der Beispielsdatei:

http://www.hostarea.de/server-12/Dezember-53d22018ad…

Code getestet auf XL2000

Gruß
Reinhard

Option Explicit
Public Merker As Long, M As Long
'
Sub Berechne()
' funktioniert erst ab XL2000 wg. Show 0
Dim Zei As Long
Application.ScreenUpdating = False
M = Range("B" & Rows.Count).End(xlUp).Row
UserForm1.Show 0
For Zei = 1 To M
 UserForm1.Caption = Left("Berechnungsfortschritt.......", Len("Berechnungsfortschritt.......") \* Zei / M)
 UserForm1.TextBox1 = Zei
 UserForm1.ProgressBar1.Value = Zei
 Cells(Zei, 2).Calculate
 DoEvents
Next Zei
Application.ScreenUpdating = True
Unload UserForm1
End Sub
'
Sub Berechne2()
' funktioniert erst ab XL2000 wg. Show 0
Dim Zelle As Range, N As Long
Application.ScreenUpdating = False
M = ActiveSheet.UsedRange.Cells.Count
UserForm1.Show 0
For Each Zelle In ActiveSheet.UsedRange
 N = N + 1
 UserForm1.TextBox1 = N
 UserForm1.ProgressBar1.Value = N
 Zelle.Calculate
 DoEvents
Next Zelle
Application.ScreenUpdating = True
Unload UserForm1
End Sub
'
Sub Berechne3()
' funktioniert erst ab XL2000 wg. Show 0
Dim Zelle As Range, N As Long
Application.ScreenUpdating = False
M = ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas).Cells.Count
UserForm1.Show 0
For Each Zelle In ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas)
 N = N + 1
 UserForm1.TextBox1 = N
 UserForm1.ProgressBar1.Value = N
 Zelle.Calculate
 DoEvents
Next Zelle
Application.ScreenUpdating = True
Unload UserForm1
End Sub
'
Sub Einmalig()
Application.OnKey "{F9}", "Berechne"
Merker = Application.Calculation
Application.Calculation = xlCalculationManual
End Sub
'
Sub Zuruecksetzen()
Application.Calculation = Merker
Application.OnKey "{F9}", ""
End Sub