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

Schleifendurchlauf verhindern

Schleifendurchlauf verhindern
11.07.2004 10:27:10
maine-coon
Nachfolgender Code funktioniert, aber wenn ich auf meine Schaltfläche zum Verlassen des Blattes klicke, dann geht das zwar ganz schnell, aber man sieht, dass da eine Schleife durchlaufen wird. Vermutlich 200 mal, weil der Rangebereich aus 200 Zellen besteht.
Das muss man doch verhindern können,oder?

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Set rng = Range("Orte")
If Target.Cells.count > 1 Then
Exit Sub
End If
If Intersect(Target, rng) Is Nothing Then
Exit Sub
End If
If WorksheetFunction.CountIf(rng, Target.Value) > 1 Then
Target.Interior.ColorIndex = 6
MsgBox ("Der Wert ist bereits in der Liste!")
Else
Target.Interior.ColorIndex = xlColorIndexNone
End If
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleifendurchlauf verhindern
Ramses
Hallo
an den Anfang deines Codes
Application.ScreenUpdating = False
und ans Ende
Application.ScreenUpdating = True
Gruss Rainer
AW: Schleifendurchlauf verhindern
11.07.2004 12:22:22
maine-coon
Hallo Rainer,
ich habe es eingesetzt, aber das geht nicht.
Denn dann wird verhindert, dass die Zelle gelb gefärbt wird.
Es erscheint nur die Msgbox.
Gruß Achim
AW: Schleifendurchlauf verhindern
Ramses
Hallo
Hab mir deinen Code mal angesehen,... wo ist da eine Schleife ?
Zudem, hat die Anweisung "Application.ScreenUpdating = False" nichts damit zu tun, wenn deine Zelle nicht gelb wird.
Wenn du vorher aussteigst aus dem Code musst du halt die Bildschirmaktualisierung auch da wieder einschalten. Du hast mehrere Exit Subs drin, davor muss die Anweisung dass die Bildschirmaktualisierung wieder eingeschaltet wird.
Da du ein Change_Ereignis verwendest kannst du anstelle von Screen-Updating auch mit
Application.EnableEvents = False
probieren. Aber bei deinen Ausstiegpunkten und am Ende des Codes das EnableEvents wieder auf True setzen !!
Gruss Rainer
Anzeige
AW: Schleifendurchlauf verhindern
11.07.2004 12:41:16
maine-coon
Ich werde es nochmal einbauen und testen.
Vielleicht habe ich das mit Schleife etwas unglücklich beschrieben. Natürlich hat der Code keine For Next oder sowas drin.
Aber wenn ich das Blatt verlasse, dann flackert es erstmal wie eine Glühlampe, bis ich zum Hauptblatt zurück bin. Ich dachte halt, dass da ein teil des Codes den Rangebereich voll durchläuft.
Ich melde mich gleich wieder wie das mit dem ENABLEEVENTS verläuft.
Gruß Achim
AW: Schleifendurchlauf verhindern
11.07.2004 12:52:54
maine-coon
Irgenwie geht das nicht. Was ich nicht verstehe. Wenn ich auf das Makro klicke, dass mich zurück zum Hauptblatt führt, dann ist doch der Code nicht mehr aktiv.
Ich muss mir was anderes überlegen.
Gruß Achim
Anzeige
AW: Schleifendurchlauf verhindern
11.07.2004 13:08:01
maine-coon
Ich habe den Befehl
Application.ScreenUpdating = False
in das Makro eingesetzt, dass den Rücksprung zum Hauptblatt macht.
jetzt funktioniert es.
Aber eigentlich dürfte doch das Hauptblatt jetzt nicht mehr reagieren, weil hier gar kein Application.ScreenUpdating = True existiert.
Oder wird mit dem Verlassen des aktuellen Blatts der Befehl automatisch wieder zu Application.ScreenUpdating = True gesetzt?
AW: Schleifendurchlauf verhindern
Ramses
Hallo
Der Befehl hat nichst mit dem Blatt zu tun, sondern ist nur während der Laufzeit des Makros gültig. Wenn das Makro korrekt abgearbeitet wird, und die Ausstiegspunkte ebenfalls korrekt initialisiert werden, funktioniert die Bildschirmaktualisierung nach dem Ende des Makros wieder.
gruss Rainer
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige