Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1876to1880
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

Fehler Makro Worksheet.Change-Ereignis

Fehler Makro Worksheet.Change-Ereignis
23.03.2022 14:39:56
Zulu
Hallo zusammen,
ich brauche die Hilfe des Forums und möchte kurz mein Problem schildern:
Ich habe ein kleines Makro geschrieben, welches den Nutzer bei der Änderung des Zelleninhalts in Spalte J auf "order" fragen soll, ob alle Dokumente abgelegt wurden.
Je nach Antwort werden verschiedene Aktionen ausgelöst.
Jetzt kommt es jedoch dazu, dass das Makro auch reagiert wenn mehrere Zeilen z.B. in Spalte O ausgewählt werden und Daten über die Entfernen Taste gelöscht werden.
Könnt Ihr mir sagen warum das Makro anspringt obwohl die Spalte J nicht geändert wird? Kann dies am vorhandenen Blattschutz liegen?
Und wenn ja, wie kann das Makro geschrieben werden, dass der Fehler nicht auftritt?
https://www.herber.de/bbs/user/151989.xlsm
Ich habe für das bessere Verständnis die Datei (alle unrelevanten Daten wurden entfernt) hochgeladen.
Über Hilfe wäre ich sehr dankbar.
LG

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

Betreff
Datum
Anwender
Anzeige
AW: Fehler Makro Worksheet.Change-Ereignis
23.03.2022 14:53:21
ChrisL
Hi
Bei Bearbeitung mehrere Zeilen läuft die If-Anweisung auf einen Fehler (Target.Value ist ganzer Bereich statt einzelne Zelle). Mit On Error Resume Next überspringst du den Fehler und die If-Anweisung wird einfach ignoriert.
On Error Resume Next kann man in Ausnahmefällen (z.B. es gibt nur eine Zeile wo es egal ist, wenn diese übersprungen wird) mal machen, sollte aber nicht die Regel sein.
cu
Chris
AW: Fehler Makro Worksheet.Change-Ereignis
23.03.2022 15:02:09
ChrisL
Z.B. so...

Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
On Error GoTo ErrorHandler
With Worksheets("Liste")
If Not Intersect(Target, .Columns(10)) Is Nothing Then
For Each c In Intersect(Target, .Columns(10)).Cells
If c = "order" Then
If MsgBox("Wurden alle relevanten Dokumente abgelegt?", vbYesNo) = vbYes Then
.Unprotect Password:=("Test")
.Cells(c.Row, 24).Value = "Dokumente abgelegt " & Chr(10) _
& Environ("USERNAME") & " / " & "Datum: " & CStr(Date)
.Protect Password:=("Test")
Else
MsgBox "Bitte lade alle Dokumente in den entsprechenden Ordner", vbOKOnly
Application.EnableEvents = False
c = "request"
Application.EnableEvents = True
End If
End If
Next c
End If
End With
Exit Sub
ErrorHandler:
Application.EnableEvents = True
MsgBox "Unvorhergesehener Fehler" & Chr(10) & Err.Number & Chr(10) & Err.Description
End Sub
cu
Chris
Anzeige
AW: Fehler Makro Worksheet.Change-Ereignis
23.03.2022 14:55:05
Michael
Moin,
warum weiß ich nicht, aber so scheint es mir zu funktionieren, auch wenn in Spalte O oder einer anderen mehrere Zellen markiert und deren Inhalte entfernt werden:

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Column = 10 Then
If Target.Value = "order" Then
If MsgBox("Wurden alle relevanten Dokumente abgelegt?", vbYesNo) = vbYes Then
Sheets("Liste").Unprotect Password:=("Test")
Cells(Target.Row, 24).Value = "Dokumente abgelegt " & Chr(10) _
& Environ("USERNAME") & " / " & "Datum: " & CStr(Date)
Sheets("PI_Liste").Protect Password:=("Test")
Else: MsgBox "Bitte lade alle Dokumente in den entsprechenden Ordner", vbOKOnly
Target.Value = "request"
End If
End If
Else: End If
End Sub
OK, warum hat wohl Chris gerade geschrieben ;-)
Grüße
Michael
Anzeige
AW: Fehler Makro Worksheet.Change-Ereignis
23.03.2022 15:15:35
Zulu
Super danke für die schnelle Hilfe!
Beide Codes funktionieren tadellos. Michael hat eigentlich nur die UND Verknüpfung entfernt. Warum dadurch der Fehler nicht ausgelöst wird ist mir jedoch schleierhaft...

AW: Fehler Makro Worksheet.Change-Ereignis
23.03.2022 15:50:36
Michael
Hallo nochmal,
der Fehler tritt bei Target.Value = "order" auf. Als Konsequenz auch die beim Löschen in Spalte O nicht erfüllte Bedingung "Target.Column = 10" zu ignorieren ist schon eigenartig von vba. Spalte O ist Column 15, vba könnte sich auch sagen "stimmt nicht", was auch immer bei AND noch kommt, das wird nicht mehr WAHR, also weiter im ELSE-Teil...
Ich hab die Bedingungen einfach voneinander getrennt. Target.Value = "order" wird beim Löschen in Spalte O einfach nicht erreicht und wirft dann auch keinen Fehler.
Chris' Code ist schon schöner im Ganzen, nimm den ;-)
Wie man sowas rauskriegt: Im vba-Editor kannst Du Haltepunkte setzen und mit F8 durch den Code steppen, mit dem Mauszeiger auf Variablen oder bspw. auf Target.Column verharren und bekommst deren momentanen Wert angezeigt. Bei Target.Value wurde nix angezeigt, wenn irgendwo im Blatt mehrere Zellinhalte gelöscht wurden.
VG Michael
Anzeige
AW: Fehler Makro Worksheet.Change-Ereignis
23.03.2022 16:44:00
Zulu
Danke für dein Feedback. Die Möglichkeit mit den Haltepunkten war mir nicht bekannt.
Das bei Target.Value nichts angezeigt wurde war dann für dich der Indiz, dass sich dort der Fehler befindet?
VG
Ja, so war das (owT)
23.03.2022 16:47:42
Michael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige