Anzeige
Archiv - Navigation
404to408
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
404to408
404to408
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Durch Wertzuweisung Makro verzögert - Flackern

Durch Wertzuweisung Makro verzögert - Flackern
Peter
Guten Morgen,
in einem Zellbereich zähle ich die Zellen mit bestimmter Hintergrundfarbe.
Der Code ist wie folgt:

Private Sub Worksheet_Calculate()
Dim weeks As Range, c As Range, pflicht As Range, i%
Set weeks = Sheets(1).Range("B15:B380")
Set pflicht = Sheets(1).Range("J5")
Application.ScreenUpdating = False
i = 0
For Each c In weeks.Cells
If c.Interior.ColorIndex = 50 Then
i = i + 1
End If
Next c
pflicht.Value = i
Application.ScreenUpdating = True
End Sub

Mein Problem taucht nur durch die Zuweisung pflicht.Value=i auf. Wenn ich die Zeile auskommentiere und z.B. mit MsgBox i den Wert von i ausgebe, läuft alles bestens. Wenn ich aber den Wert in der Zelle J5 (=pflicht) haben will, läuft das
Makro viel langsamer und die Anzeige flackert (in Form von Störstreifen, nicht so wie bei ScreenUpdating).
Weiß jemand Rat?
Vielen Dank und Gruß
Peter

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Durch Wertzuweisung Makro verzögert - Flackern
Martin
Hallo Peter
das liegt daran, dass du praktisch in einer Endlosschlaufe hängst! Mit der Anweisung pflicht.value=i änderst du einen Wert in dem Sheet, was die Tabelle zu einer Neukalkulation zwingt, was wiederum erneut dein Makro aufruft, etc.
Mögliche Lösungen wären:
a) nimm als event Worksheet_Change und prüfe zuerst, von welchem Bereich das event aufgerufen wird. Das eigentliche Makro läuft dann nur ab, wenn die richtigen Bedingungen erfüllt sind (hängt von deiner Anwendung ab)
b) du kannst die Ausführung von events vorübergehend ausschalten, um zu verhindern dass dein Makro sich selbst aufruft:
Application.EnableEvents = False
am anfang des Makros setzen, und WICHTIG am Ende wieder mit True einschalten
Gruss
Martin
Anzeige
AW: Danke, da war ich wohl blind
30.03.2004 09:56:00
Peter
Hallo Martin,
ja klar, hast natürlich Recht.
Ich hab' mich für die Lösung b) Events vorübergehend abschalten entschieden, läuft
einwandfrei.
Vielen Dank und schönen Tag noch
Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige