Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
912to916
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
912to916
912to916
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Never ending story! ...Schleife verhindern

Never ending story! ...Schleife verhindern
02.10.2007 10:08:50
Jens
Hallo Leutz,
in meiner Datei wird nach jeder Änderung in Spalte B über den Befehl: "Private Sub Worksheet_Change(ByVal Target As Range)" die Spalte auf Doubletten geprüft. Jetzt brauche ich die Funktionalität, dass in den Zellen gleichermaßen die Leerzeichen eliminiert werden. Mein Problem ist jetzt, dass beim Löschen der Leerzeichen die Spalte geändert wird und somit das Makro erneut anläuft und nicht wieder aufhört... :-(
So sieht im Moment mein Code aus...

Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Column = 2) Then Doppelte_Rot
If (Target.Column = 4) Then Doppelte_Rot
End Sub



Private Sub Doppelte_Rot()
Dim lngZeile As Long
Dim lngZeilenSprung As Long
Dim strSuchwert As String
Dim strSuchwert2 As String
Dim zelle As Range
lngZeile = Cells(Rows.Count, 2).End(xlUp).Row
For Each zelle In Range(Cells(8, 2), Cells(lngZeile, 2))
zelle = WorksheetFunction.Substitute(zelle, " ", "")
Next
For lngZeilenSprung = lngZeile To 8 Step -1
strSuchwert = Cells(lngZeilenSprung, 2).Value
strSuchwert2 = Cells(lngZeilenSprung, 4).Value
Cells(lngZeilenSprung, 2).Interior.ColorIndex = x1none
If strSuchwert2 = "reserve" Then
GoTo 123
End If
If Application.WorksheetFunction.CountIf(Range(Cells(1, 2), Cells(lngZeile, 2)),  _
strSuchwert)  1 Then
Cells(lngZeilenSprung, 2).Interior.ColorIndex = 3
End If
123
Next lngZeilenSprung
End Sub


Danke für Eure Hilfe!!!!!
Gruß JensT

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Never ending story! ...Schleife verhindern
02.10.2007 10:20:00
Hajo_Zi
Hallo Jens,
zu Beginn
Application.EnableEvents =false
vor end Sub
Application.EnableEvents =True
Ich bin mal davon ausgegangen das kein Exit Sub vorhanden ist und das kein Fehler auftritt. Da sonst die Reaktion auf Eingabe abgeschaltet ist.

AW: Never ending story! ...Schleife verhindern
02.10.2007 10:20:00
Renee
Hi Jens,
So dürfte es besser (aber noch nicht optimal!) sein:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If (Target.Column = 2) Then Doppelte_Rot
If (Target.Column = 4) Then Doppelte_Rot
Application.EnableEvents = True
End Sub


GreetZ Renee

Anzeige
AW: Never ending story! ...Schleife verhindern
02.10.2007 10:49:00
Jens
SUPIIIII!!!!
Es funktioniert prima!!!
@Renee Wieso ist das nicht optimal!?
Gruß JensT

AW: Never ending story! ...Schleife verhindern
02.10.2007 11:33:15
Renee
Hi Jens,
Wieso ist das nicht optimal!?
Weil ich Deinen restlichen Code nur so überflogen hab und dabei ist mir aufgefallen, dass Du ihn bei jedem Change in der Spalte 2 und/oder 4 durchläufst und mit grösster Wahrscheinlichkeit, würde es einmal genügen.
Anyway, für Dich läuft's und manchmal bin ich wirklich ein bisschen zu pingelig ;-)
GreetZ Renee

AW: Never ending story! ...Schleife verhindern
02.10.2007 11:54:00
Jens
Hi Renee,
für die Doublettenprüfung muss er doch bei jeder Änderung durch die komplette Liste. Die Leerzeichen-Geschichte kann ich noch in ein anderes Makro implementieren, so dass er nur die per Makro eingefügten Zellen abarbeitet. Bei den händisch eingegebenen Werten werden sich die User hüten, mehr als notwendig zu tippen, soll heißen, da wird es keine Leerzeichen geben ;-)
Meintest Du das!?
Die Prüfung bei Spalte 4 brauchte ich, da die gesamte Zeile übersprungen wird, solange "reserve" drinsteht. Vielleicht erübrigt sich das Problem auch, da ich noch einen zweiten Threat aufgemacht hab, in dem meine Doublettenprüfung zur Disposition steht... *grins*
Grüße aus Siegburg
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige