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

VBA-Code läuft nur einmal... Warum ?

VBA-Code läuft nur einmal... Warum ?
28.11.2002 11:14:33
Michi
O.k. zweites Thema das ich hier Poste ! ( Erstes Thema siehe https://www.herber.de/forum/messages/186364.html )

Folgendes Problem: Ich habe von einem Forum-User (Steffen) ein VBA Code bekommen der anscheinend nur einmal läuft !
Der Code Teilt mir ein Text in einer Zelle bei mehr als 140 Zeichen mit ganzer Wortberücksichtigung und schreibt den Rest in die Nächste usw.

Wenn ich nun die erste Zelle lösche oder die zweite, welche auch immer, und ich einen anderen Text reinschreibe der wieder mehr als 140 Zeichen hat, teilt Excel mir die Zelle nicht mehr.
Warum ???

Hier der Code von Steffen :

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
temp = Target.Value
länge = Len(temp)
If Target.Column = 1 Then
If länge = 0 Then Exit Sub
If länge > 140 And länge <= 280 Then
trennen = InStr(130, temp, " ", vbTextCompare)
erste = Left(temp, trennen)
zweite = Right(temp, länge - trennen)
End If
If länge > 280 And länge <= 420 Then
trennen = InStr(130, temp, " ", vbTextCompare)
trennen2 = InStr(270, temp, " ", vbTextCompare)
erste = Left(temp, trennen)
zweite = Mid(temp, trennen + 1, trennen2 - trennen)
dritte = Right(temp, länge - trennen2)
Else
dritte = ""
vierte = ""
End If
If länge > 420 Then
trennen = InStr(130, temp, " ", vbTextCompare)
trennen2 = InStr(270, temp, " ", vbTextCompare)
trennen3 = InStr(400, temp, " ", vbTextCompare)
erste = Left(temp, trennen)
zweite = Mid(temp, trennen + 1, trennen2 - trennen)
dritte = Mid(temp, trennen2 + 1, trennen3 - trennen2)
vierte = Right(temp, länge - trennen3)
Else
vierte = ""
End If
Target.Value = erste
Target.Offset(1, 0).Value = zweite
Target.Offset(2, 0).Value = dritte
Target.Offset(3, 0).Value = vierte
Else
Exit Sub
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Für Hilfe wäre ich sehr Dankbar

Gruß Michi




4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: VBA-Code läuft nur einmal... Warum ?
28.11.2002 12:07:22
Martin Bolleter
Hallo Michi

dieser Code "überwacht" nur die erste Kolonne "A", wie du in der 8. Zeile siehst: If Target.Column = 1 Then
Einträge in Kolonne B und höher werden nicht erfasst.

Wenn du das ändern willst, musst du diese Bedingung anpassen, zB würde If Target.Column<4 Einträge in den Kolonnen A, B und C überwachen.

Gruss
Martin

Wie jetzt ?
28.11.2002 12:51:11
Michi
Hi Martin, danke für deine Antwort, aber es funktionert nicht !
Ich habe es mit <4 , =4 , <=4 ausprobiert.Ist immer noch dasselbe Problem.

Noch eine andere Idee evtl. ??? :-)

Gruß Michi


Re: Wie jetzt ?
28.11.2002 14:40:02
Martin Bolleter
Hallo Michi

das Hauptproblem deines Codes war, dass je nach Ereignis die Anweisungen
EnableEvents = False und
DisplayAlerts = False
ausgeführt, aber wegen vorzeitigem Exit Sub nie mehr zurück gestellt wurden! Dies führt dazu, dass dauerhaft eben die Events nicht mehr ausgeführt werden. Dies ist ein kapitaler Programm-Fehler!

Ich habe dir das Programm mal umgestrickt:

Das Ausschalten der Alerts habe ich mal ganz gestrichen, da es (scheinbar?) in deinem Fall nicht nötig ist (jedenfalls soweit ich deinen Code jetzt kenne).
Es werden die Spalten A und B überwacht, kannst du aber ändern in Zeile 6.
Mir ist nicht klar, was du erwartest wenn an einem aufgeteilten String etwas geändert wird. Dabei werden die darunterstehenden (schon früher aufgeteilten) Werte überschrieben od gelöscht, sofern der neue Eintrag >140.
Teste es mal und schau, ob dir das Verhalten so passt.

Gruss
Martin

Anzeige
Re: Wie jetzt ?
28.11.2002 15:19:15
Martin Bolleter
Hallo Michi

noch ein Zusatz: um die Events und Alerts überhaupt zuerst wieder einzuschalten, musst du zB folgendes kleine Programm laufen lassen:

Gruss
Martin

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige