Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1376to1380
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
Inhaltsverzeichnis

Wieso wird der 2.Teil nicht ausgeführt

Wieso wird der 2.Teil nicht ausgeführt
28.08.2014 18:35:35
walter mb

Hallo zusammen,
wieso wird der 2. Teil des Makros nicht ausgeführt.
Das Makro "löschen" klappt nicht.
mfg walter mb

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim vntNewValue As Variant
Dim lrgRange As Range
On Error GoTo ERR_Handler
Set lrgRange = Range("B3:B65000")
If Intersect(Target, lrgRange) Is Nothing Then Exit Sub
With Target
If .Count = 1 Then
Select Case .Value
Case "best": vntNewValue = "Bestandskunde"
Case "bes": vntNewValue = "Besuch"
Case "gs": vntNewValue = "Gelbe Seiten"
Case "gsb": vntNewValue = "Gelbe Seiten Buch"
Case "gsi": vntNewValue = "Gelbe Seiten Internet"
Case "go": vntNewValue = "Google"
Case "gom": vntNewValue = "Google S-Markisen"
Case "gos": vntNewValue = "Google S-Sonnenschutz"
Case "i": vntNewValue = "Internet"
Case "ver": vntNewValue = "Vermittlung"
Case "vorb": vntNewValue = "Vorbeifahrt"
Case "wei": vntNewValue = "Weiterempfehlung"
Case "wu": vntNewValue = "Wohnt Umkreis"
Case "z": vntNewValue = "Zeitung"
Case Else: vntNewValue = .Value
End Select
Application.EnableEvents = False
.Value = vntNewValue
End If
End With
ERR_Handler:
Application.EnableEvents = True
'End Sub

'

Private Sub wWorksheet_Change(ByVal Target As Excel.Range)
If Target.Count > 1 Then Exit Sub
If Target.Column = 13 Then
On Error GoTo ErrHandler
Application.EnableEvents = False
Call löschen
End If
ErrHandler:
Application.EnableEvents = True
End Sub

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wieso wird der 2.Teil nicht ausgeführt
28.08.2014 19:04:01
Daniel
Hi
warum sollte das Makor "löschen" ausgeführt werden ???
dazu müsstest du es aufrufen.
der Befehl "Call löschen" steht im Makro "wWorksheet_Change" und dieses ist, aufgrund des geänderten Namens, kein automatisch ausgeführtes Event-Makro, sondern nur ein ganz normales Makro auch, welches untätig rumliegt, bis es von einem andern Makro mit Call und Parameterübergabe gestartet wird.
Da das nicht vorkommt, wird auch löschen nicht gestartet.
Gruß Daniel

AW: Wieso wird der 2.Teil nicht ausgeführt
28.08.2014 19:09:34
walter mb
Hallo Daniel,
ich habe beide in ein Makro:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
gesetzt und dachte das es abgearbeitet wird.
So sieht es aus:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim vntNewValue As Variant
Dim lrgRange As Range
On Error GoTo ERR_Handler
Set lrgRange = Range("B3:B65000")
If Intersect(Target, lrgRange) Is Nothing Then Exit Sub
With Target
If .Count = 1 Then
Select Case .Value
Case "best": vntNewValue = "Bestandskunde"
Case "bes": vntNewValue = "Besuch"
Case "gs": vntNewValue = "Gelbe Seiten"
Case "gsb": vntNewValue = "Gelbe Seiten Buch"
Case "gsi": vntNewValue = "Gelbe Seiten Internet"
Case "go": vntNewValue = "Google"
Case "gom": vntNewValue = "Google S-Markisen"
Case "gos": vntNewValue = "Google S-Sonnenschutz"
Case "i": vntNewValue = "Internet"
Case "ver": vntNewValue = "Vermittlung"
Case "vorb": vntNewValue = "Vorbeifahrt"
Case "wei": vntNewValue = "Weiterempfehlung"
Case "wu": vntNewValue = "Wohnt Umkreis"
Case "z": vntNewValue = "Zeitung"
Case Else: vntNewValue = .Value
End Select
Application.EnableEvents = False
.Value = vntNewValue
End If
End With
ERR_Handler:
Application.EnableEvents = True
If Target.Count > 1 Then Exit Sub
If Target.Column = 13 Then
On Error GoTo ErrHandler
Application.EnableEvents = False
Call löschen
End If
ErrHandler:
Application.EnableEvents = True
End Sub
gruß walter mb

Anzeige
Na weeßte, so ist das LöschMakro Teil der ...
28.08.2014 19:22:15
Luc:-?
…FehlerBehandlung, Walter!
Gruß, Luc :-?

AW: Na weeßte, so ist das LöschMakro Teil der ...
28.08.2014 19:39:35
Daniel
Hi Luc
das ist hier nicht die Ursache.
ausserdem, vielleicht ist es ja sinnvoll, wenn bei einem Fehler im ersten Teil des Codes der zweite Teil trotzdem ausgeführt wird?
Gruß Daniel

Das ist zwar richtig, weil er den üblichen ...
29.08.2014 01:00:17
Luc:-?
…Sprungbefehl (bzw eine entsprd Abfrage) weggelassen hat, Daniel,
aber so etwas macht man 1. nicht und 2. ist es trotzdem falsch, weil hierin eine (sinnlose) 2.Fehlerbehandlung enthalten ist.
Gruß, Luc :-?

AW: Das ist zwar richtig, weil er den üblichen ...
29.08.2014 01:48:16
Daniel
Sehe ich anders.
Der Sprungbefehl bei Fehler ist mit On Error GoTo ERR_Handler doch vorhanden, ebenso die Sprungmarke, das passt alles soweit
Wenn ein Fehler in bezug auf Fehlerbehandlung vorliegt, dann derjenige, dass er vergessen hat, nach dem Fehlersprung des ersten Makroteils den Fehlerbehandlungsmodus zu deaktivieren, damit der Fehlersprung für den zweiten Teil aktiv werden kann.
Denn solange man sich im Fehlerbehandlungsmodus befindet, kann kein weiter
Fehlersprung ausgeführt werden.
Gruß Daniel

Anzeige
Eben! Was ist da anders, ...
29.08.2014 02:29:08
Luc:-?
…Daniel?
Wäre der Code von dir, würde ich wohl auch „vergessen“ vermuten, aber so ist es doch nur schlicht Unkenntnis!
Luc :-?

AW: Eben! Was ist da anders, ...
29.08.2014 02:42:29
Daniel
Egal wie es ist, die Fehlerbehandlung ist nicht die Ursache dafür,dass der zweite Teil des Codes nicht ausgeführt wird, das hat andere grunde.

Bei so etwas gibt's gern mehrere Gründe!
29.08.2014 04:02:17
Luc:-?
Deshalb empfehle ich auch immer, eine EventProc als Verteiler zu benutzen, falls mehrere Aktionen durchgeführt wdn sollen.
Luc :-?

AW: EventProc??? what's that?
29.08.2014 07:46:04
Daniel
Empfiehlt du das immer?
Hier hast du es bisher nicht getan.
Braucht man auch nicht, eine vernünftige Bedigungsprüfung mit vollständigen If - End If -Blöcken ohne Exit Subs reicht aus, wenn man im selben Event unterschiedliche Aktionen ausführen will.
Gruß Daniel

Anzeige
Es wird immer klarer, warum Isi auf dich ...
29.08.2014 12:32:35
Luc:-?
…so allergisch reagiert, Slowboarder!
Luc :-?

AW: Durchaus möglich...
29.08.2014 13:36:50
Daniel
... ihr seid euch in machen Punkten ziemlich ähnlich.
trotzem würde ich mich das mit den EventProcs nochmal interessieren, was das genau ist und wie das bei diesem Problem helfen würde.
Schließlich will ich ja was dazu lernen ;-)
Gruß Daniel

AW: Wieso wird der 2.Teil nicht ausgeführt
28.08.2014 19:27:36
Daniel
Hi
naja, einfach zwei Makros die einzeln für sich funktionieren, zusammenzu kopieren klappt selten, dass muss man schon ein bisschen überarbeiten, vorallem wenn man mit Abbruchbedingungen arbeitet.
im ersten Teil des Makros schreibst du ja:
If Intersect(Target,  Range("B3:B65000")) Is Nothing Then Exit Sub

dh bei einer Änderung ausserhalb von Spalte B wird der Code sofort beendet!
damit kann dann in der Folge
   If Target.Column = 13 Then

auch nie WAHR werden, weil diese Codezeile wird ja nur erreicht, wenn eine Änderung in Spalte B (2) stattfand.
Wenn du ein Event-Makro mit mehrern unterschiedlichen Aktionen für mehrere Bereiche hast, dann solltest du das einfache IF ... THEN EXIT SUB unterlassen und besser mit vollständigen IF-THEN-ENDIF-Blöcken arbeiten (hier mal der Prinzipelle Code, die weiteren benötigten Bestandteile bitte ergänzen):
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 2 And Target.Row > 3 Then
If Target.CountLarge = 1 then
Select Case Target.Value
Case:...
Case:...
End Select
Else
End IF
End If
If Target.CountLarge = 1 then
If Target.Columns = 13 Then
Call löschen
end if
End if
End Sub
Gruß Daniel

Anzeige
Das ist ja...
29.08.2014 19:33:25
walter mb
Hallo Luc und Daniel,
bin gerade erst wiedergekommen.
DANKE
für die Lehrreichen Infos aber versteh nur Bahnhof...
Habe mal so abgeändert, jetzt funktioniert nichts mehr,
vielleicht habt IHR nochmal erbarmen und helft mir.
mfg
walter mb
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim vntNewValue As Variant
Dim lrgRange As Range
If Intersect(Target, Range("B3:B65000")) Is Nothing Then Exit Sub
If Target.Column = 2 And Target.Row > 3 Then
If Target.CountLarge = 1 Then
With Target
' If .Count = 1 Then
Select Case Target.Value
'Select Case .Value
Case "best": vntNewValue = "Bestandskunde"
Case "bes": vntNewValue = "Besuch"
Case "gs": vntNewValue = "Gelbe Seiten"
Case "gsb": vntNewValue = "Gelbe Seiten Buch"
Case "gsi": vntNewValue = "Gelbe Seiten Internet"
Case "go": vntNewValue = "Google"
Case "gogs": vntNewValue = "Google Gelbe Seiten"
Case "gom": vntNewValue = "Google S-Markisen"
Case "gos": vntNewValue = "Google S-Sonnenschutz"
Case "i": vntNewValue = "Internet"
Case "ver": vntNewValue = "Vermittlung"
Case "vorb": vntNewValue = "Vorbeifahrt"
Case "wei": vntNewValue = "Weiterempfehlung"
Case "wu": vntNewValue = "Wohnt Umkreis"
Case "z": vntNewValue = "Zeitung"
Case Else: vntNewValue = .Value
End Select
Application.EnableEvents = False
.Value = vntNewValue
End With
End If
End If
End If
If Target.CountLarge = 1 Then
If Target.Columns = 13 Then
Call löschen
End If
End If
End Sub

Anzeige
AW: dann nochmal für dich das wichtigste:.
29.08.2014 22:22:40
Daniel
Wenn in deinem Eventmakro mehrere Zellbereiche mit unterschiedlichen Aktionen bearbeiten willst, dann darfst du nicht bei der ersten Prüfung mit EXIT SUB abbrechen, wenn diese nicht erfüllt ist.
Klaro?
Gruß Daniel

AW: dann nochmal für dich das wichtigste:.
29.08.2014 23:36:23
Ewald
Hallo,
teste mal so
Private Sub Worksheet_Change(ByVal Target As Range)
Dim vntNewValue As Variant
Dim lrgRange As Range
On Error GoTo ERR_Handler
If Target.Count > 1 Then Exit Sub
If Target.Column = 2 And Target.Row > 2 Then
With Target
Select Case .Value
Case "best": vntNewValue = "Bestandskunde"
Case "bes": vntNewValue = "Besuch"
Case "gs": vntNewValue = "Gelbe Seiten"
Case "gsb": vntNewValue = "Gelbe Seiten Buch"
Case "gsi": vntNewValue = "Gelbe Seiten Internet"
Case "go": vntNewValue = "Google"
Case "gom": vntNewValue = "Google S-Markisen"
Case "gos": vntNewValue = "Google S-Sonnenschutz"
Case "i": vntNewValue = "Internet"
Case "ver": vntNewValue = "Vermittlung"
Case "vorb": vntNewValue = "Vorbeifahrt"
Case "wei": vntNewValue = "Weiterempfehlung"
Case "wu": vntNewValue = "Wohnt Umkreis"
Case "z": vntNewValue = "Zeitung"
Case Else: vntNewValue = .Value
End Select
Application.EnableEvents = False
.Value = vntNewValue
End With
End If
If Target.Column = 13 Then
Call löschen
End If
ERR_Handler:
Application.EnableEvents = True
End Sub
Gruß Ewald

Anzeige
DANKE Ewald klappt !!! -)
30.08.2014 11:23:41
walter mb
Guten Morgen Ewald,
kllappt bestens !
DANKE
mfg
walter mb

Daniel Danke -)
30.08.2014 11:22:35
walter mb
Guten Morgen Daniel,
das habe ich jetzt verstanden !!!
mfg
walter mb

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige