'keine Rückmeldung' verhindern

Moin,
es ist vielleicht kein spezielles Excel-Problem ( Win7 ? ):
Beim Abarbeiten eines langwierigen vba-Makros fällt mir aber besonders auf, dass oben im Excel-Fenster regelmäßig „Keine Rückmeldung“ angezeigt wird.
Nach der Abarbeitung ist dann wieder Alles i. O.

Meine Fragen:

  • kann man den Aussetzer von Excel gegenüber dem BetriebsSystem verhindern?
  • kann das Ergebnis der Berechnung beeinträchtigt werden?

Ich lasse den folgenden Code laufen:

Sub gleiche_ausblenden_down()
LR = ActiveCell.SpecialCells(xlLastCell).Row: LC = ActiveCell.SpecialCells(xlLastCell).Column
AR = ActiveCell.Row: AC = ActiveCell.Column
’ R1 = IIf(.Cells(1, 20).Value = 0, 9, .Cells(1, 20).Value)
R1 = 9 ’ R1=9:Überschriften NUR OBERHALB Zeile 9!!! Zeile 9 ist z. Zt. die MusterZeile ( Formate )
counter = 0
Call gmst
For zeile = R1 To LR
For i = zeile + 1 To LR
’ If Cells(i, AC) „“ Then
If Cells(i, AC) = Cells(zeile, AC) Then
If Rows(i).EntireRow.Hidden = True Then counter = counter + 1
Application.StatusBar = „Ausgeblendet:“ & counter
Rows(i).EntireRow.Hidden = True
End If
’ End If
Next i
Next zeile
Cells(AR, AC).Select
Call gmsf
End Sub

Die UnterProgramme sind mit Hilfe von Reinhard entstanden und schalten zwecks ZeitEinsparung Einiges ab. Haben immer gut funktioniert :smile:

Public Static Sub GetMoreSpeed(Optional ByVal Modus As Boolean = True)
Dim intCalculation As Integer, bolSperre As Boolean
If Modus = True Then
intCalculation = Application.Calculation
bolSperre = ActiveSheet.ProtectContents
ActiveSheet.Unprotect
Else
If bolSperre = True Then ActiveSheet.Protect
End If
With Application
.ScreenUpdating = Not Modus
.EnableEvents = Not Modus
.Calculation = IIf(Modus = True, xlManual, intCalculation)
.Cursor = IIf(Modus = True, xlWait, xlDefault)
End With
End Sub

Sub gmst()
Call GetMoreSpeed(True)
End Sub

Sub gmsf()
Call GetMoreSpeed(False)
End Sub

Angezeigt wird jedoch bis zum „Absturz“ immer aktuell der ZählerStand per application.statusbar.

Wer blickt durch? :smile:
Vielen Dank für Dein Interesse.
Freundliche Grüße
Thomas

P.S.: Falls der Autor der vorherigen Threads noch interessiert ist:
der Code sucht in der aktiven Spalte nach Duplikaten und blendet die gefundenen Zeilen aus.

Hi,

ergänze den Inhalt der verschiedenen Schleifen mal um den Befehl

doevents

damit sollte das Problem behoben sein.

Grüße

powerblue

doevents
Hallo power_blue,
vielen Dank für Deine Antwort. Aber wird dadurch nicht genau das Gegenteil bewirkt wie durch das „get_more_speed“-Makro?
Ich weiß auch nicht genau, wo man „doevents“ genau einfügen sollte :frowning:
Wäre für einen weiteren Hinweis dankbar.
Freundliche Grüße
Thomas

Application.Statusbar stoppt, friert ein, hält an

es ist vielleicht kein spezielles Excel-Problem ( Win7 ? ):
Beim Abarbeiten eines langwierigen vba-Makros fällt mir aber
besonders auf, dass oben im Excel-Fenster regelmäßig „Keine
Rückmeldung“ angezeigt wird.

Hallo Thomas,

Powerblue hat dir ja schon DoEvents genannt.
Hier ist ein Thread wo
ein wenig auf mögliche Ursachen eingegangen wird.

PS: Betreffänderung wegen hiesiger Archivsuche

Gruß
Reinhard

Hallo reinhard,
vielen Dank für Deine Antwort und den Link.
Zumindest tröstet mich, dass da auch keiner voll durchblickt :wink:
Ich werde das ´mal probieren mit alle 100-1000 Durchläufe „doevents“ sagen.
Meistens „fängt sich“ das Ganze ja auch wieder und das Ergebnis kommt irgendwann. Man ist aber erst´mal verunsichert. Ungeduldige Menschen brechen womöglich mit Alt-F4 ab :frowning:

PS: Betreffänderung wegen hiesiger Archivsuche

Ich ändere oft den Betreff, besonders, wenn ich auf ein TeilProblem eingehe - das erhöht nach m. Meinung in längeren Diskussionen die Auffindbarkeit :smile:
Ob man das Einfrieren unbedingt mit application.statusbar in Verbindung bringen muss, weiß ich nicht. Vielleicht finde ich ja noch ein Beispiel ohne dies.

Gruß
Reinhard

Einen schönen Tag wünsche ich Dir
Thomas

Hallo,

ich habe mir nicht angesehen, was deine Scripte so machen, nur dass sie Schleifen enthalten.

Excel steuert selbst, wofür die zugewiesene Prozessorzeit genutzt wird. Wenn du ein Schleife hast, kann es sein, dass Excel seine Zeit mit der Bearbeitung der Schleife verbringt, statt hin und wieder z. B. den Bildschirm zu aktualisieren.

Doevents sorgt dafür, dass auch andere Sachen, die abgearbeitet werden wollen, „dran kommen“.

Füge einfach in einer neuen Zeile innerhalb der Schleifen

doevents

ein.

Kannst es ja mal ausprobieren, wenn es davon langsamer wird, kannst du es wieder rausnehmen.

Grüße

powerblue

Hallo power_blue,
habe das „doevents“ in die äußere Schleife geschrieben, klappt ganz gut und wird nicht so viel langsamer :smile:
Was die zugewiesene RechenZeit anbetrifft, sind sich die SoftWareHäuser MicroSoft und
MicroSoft wohl nicht ganz einig :wink:
Aber so geht´s erst´mal, vielen Dank und schönen Tag
Thomas

Hi,

schön das es geholfen hat.

Was die zugewiesene RechenZeit anbetrifft, sind sich die
SoftWareHäuser MicroSoft und
MicroSoft wohl nicht ganz einig :wink:

Die sind sich schon einig. Windows weist von der Prozessorzeit einen betimmten Teil Excel zu. Dafür was Excel mit dieser Zeit mach, ist Excel selbst verantwortlich. In den Verantwortungsbereich von Excel fällt sowohl die Berechnung der Schleife als auch das Aktualiseren seines Fensterinhalts sowie die Kommunikation mit Windows.

Wenn jetzt Excel nichts anderes macht, als die Schleife bearbeiten, wird der Fensterinhalt vernachlässigt, und auch Anfragen des Betriebssystems werden erst mal nicht beantwortet.

Grüße

powerblue

Hallo powerblue,
sehr interessant weiterhin:

Wenn jetzt Excel nichts anderes macht, als die Schleife
bearbeiten, wird der Fensterinhalt vernachlässigt, und auch
Anfragen des Betriebssystems werden erst mal nicht
beantwortet.

Das wusste ich nicht. Hatte immer geglaubt, dass das BetriebsSystem schon mitkriegt, wenn ein Programm am Arbeiten ist und den BildschirmInhalt verändert. Ist aber letzendlich egal, denn das Ergebnis für den User ist ja, dass diesem vorgegaukelt wird, sein Excel wäre eingefroren. Das finde ich eben noch nicht optimal.
Das Positive an der ganzen Sache ist, dass anscheinend die Ergebnisse der Berechnungen nicht darunter leiden ( außer, wenn es zum endgültigen Absturz kommt ).

Jedenfalls Dir vielen Dank für die Info und herzliche Grüße
Thomas