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

Worksheet_Change-Event Bug bei Dropdown

Worksheet_Change-Event Bug bei Dropdown
24.06.2022 15:57:39
Lukas
Hallo Zusammen,
ich habe ein Makro geschrieben, welches bei der Änderung einer Zelle in der jeweiligen Zeile den Verfasser und das Datum einträgt. Das ganze funktioniert soweit auch alles wie gewünscht. Wenn ich nun aber einen Doppelklick in eine Zelle mache, in welcher eine Dropdown hinterlegt ist (per Datenüberprüfung) und dann auf die Auswahl des Dropdown-Menüs klicke, bekomme ich den Laufzeitfehler 50290 "Anwendungs- oder objektdefinierter Fehler".
Hat jemand eine Idee wie man dieses Verhalten umgehen kann?
Code siehe unten.

Public Sub ChangeLog(ByVal Target As Range, Worksheet As Object)
Dim neValues As Range
Dim tableRange As Range
Dim targetRow As Integer
Dim changeDateColumn As Integer
Dim changedByColumn As Integer
Dim uniqueIDColumn As Integer
Dim tableHeader As Integer
Dim GUID As String
Dim uniqueID As String
'Die folgenden Variablen beschreiben den SpaltenIndex der ChangeDate & Erfasser & Unique Spalte. Diese sind unter Formeln --> Namensmanager definiert
changeDateColumn = Worksheet.Names("ChangeDate").RefersToRange.Column
changedByColumn = Worksheet.Names("ChangedBy").RefersToRange.Column
uniqueIDColumn = Worksheet.Names("UniqueID").RefersToRange.Column
'Hier wird geprüft ob es sich bei der Änderung um den ChangeLog oder die UniqueID handelt, wenn ja beende an dieser Stelle
If Target.Column = changeDateColumn Or Target.Column = changedByColumn Or Target.Column = uniqueIDColumn Then
Exit Sub
End If
'tableRange beschreibt den Bereich der definierten Tabelle auf dem Arbeitsblatt
Set tableRange = Worksheet.ListObjects(1).DataBodyRange
tableHeader = Worksheet.ListObjects(1).HeaderRowRange.Row
'Prüft, ob sich die geänderte Zelle in der Tabelle befindet
On Error Resume Next
Set neValues = Intersect(Target, tableRange)
On Error GoTo 0
'Wenn sich die Zelle in der Tabelle befindet, dann trage in der entsprechenden Zelle das Datum und den Erfasser ein. Target.Row  tableHeader verhindert Bugs, in denen die Spaltenbeschriftung verändert wird.
If Not neValues Is Nothing And Target.Row  tableHeader Then
Worksheet.Cells(Target.Row, changeDateColumn).Value = Now
Worksheet.Cells(Target.Row, changedByColumn).Value = Environ("Username")
End If
uniqueID = Worksheet.Cells(Target.Row, uniqueIDColumn).Value
If uniqueID = "" Then
GUID = GenGuid()
Worksheet.Cells(Target.Row, uniqueIDColumn).Value = GUID
End If
End Sub

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheet_Change-Event Bug bei Dropdown
24.06.2022 16:05:40
Daniel
Hi
in welcher Programmzeile tritt der Fehler auf?
kannst du die Datei mit dem Fehler hochladen, damit man das nachvollziehen kann?
Gruß Daniel
AW: Worksheet_Change-Event Bug bei Dropdown
24.06.2022 16:32:13
Lukas
Hi Daniel, der Fehler tritt direkt in der ersten Zeile auf also in dieser:

changeDateColumn = Worksheet.Names("ChangeDate").RefersToRange.Column
Hier mal eine Dummy-Datei
https://www.herber.de/bbs/user/153751.xlsm
Grüße,
Lukas
AW: Worksheet_Change-Event Bug bei Dropdown
24.06.2022 16:51:48
Daniel
oh mann
und warum muss die Zelle, die einen DropDown hat suchen ?
warum sagst du mir das nicht.
Wäre alles kein Problem, wenn ich dir jede Minute, die ich für dich verwende, auch in rechnung stellen dürfte, aber da du hier ja kostenfreie Hilfe erhoffst, solltest du es potentiellen Helfern so einfach wie möglich machen und ein bisschen mehr Zeit in die Beschreibung für das Problem und wie man den Fehler erzeugt, investieren, damit diese es so einfach wie möglich haben dir zu helfen.
Ich kann jetzt auch nur feststellen, dass das Problem anscheinend die Kombination aus DropDown und direkte Zellbearbeitung bewirkt.
Da kann ich dir auch nur raten, keinen Doppelklick in die Zelle zu machen, wenn du den DropDown benutzen willst.
Beim normalen Eingeben in die Bearbeitungszeile (ohne Doppelklick) funktioniert das Makro.
Wenn du das mit dem Doppelklick gewohnt bist, nimm in den Eigenschaften den Haken "Direkte Zellbearbeitung zulassen" raus.
Gruß Daniel
Anzeige
AW: Worksheet_Change-Event Bug bei Dropdown
27.06.2022 08:37:54
Lukas
Hi Daniel,
sorry dafür! Hatte einfach nicht dran gedacht - ich gelobe Besserung!
Meine Lösung war jetzt einfach per VBA bei den Zellen mit Dropdowns den Doppelklick zu deaktivieren. So lässt sich zumindest mal der Fehler vermeiden.
Danke dir nochmal für deine Hilfe!
AW: Worksheet_Change-Event Bug bei Dropdown
24.06.2022 16:59:21
GerdL
Hallo Lukas,
probiere es mal so.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Worksheet As Object
Set Worksheet = Me
Application.EnableEvents = False
ChangeLog Target, Worksheet
Application.EnableEvents = True
End Sub
Deine Variablen sind m.E. aber zu überarbeiten.
Gruß Gerd
Anzeige
AW: Worksheet_Change-Event Bug bei Dropdown
27.06.2022 08:34:31
Lukas
Hi Gerd,
danke für deine Hilfe! das Event deaktivieren habe ich ausprobiert, hat aber leider den Fehler nicht behoben. Mein Holzweg war einfach den Doppelklick für die Dropdown-Zellen per VBA zu sperren.
Bzgl. der Variablen: Als Anfänger bin ich über jeden Tipp wie man das besser gestalten kann froh!
Beste Grüße!
AW: Worksheet_Change-Event Bug bei Dropdown
24.06.2022 19:17:20
onur
Könnte damit zusammenhängen, dass du das Change-Event und damit ebenso Sub ChangeLog jeweils DREI mal ausführst, weil du weder die Events im Change-Event abschaltest noch direkt dort schon "filterst", in welchem Bereich auf Änderungen reagiert werden soll.
Ausserdem ist der Code sowas von aufgebläht, dass man ihn auch mit höchstens halb so viel Codezeilen schreiben könnte.
Anzeige
AW: Worksheet_Change-Event Bug bei Dropdown
27.06.2022 08:06:57
Lukas
Hi Onur,
hast recht, ich versuche das mal direkt im Change Event zu filtern bzw. abzuschalten.
Zum Thema Code: Ich bin absoluter Anfänger in VBA. Mein Ziel war es direkte Referenzen auf bspw. den Spaltenindex zu vermeiden, sodass beim einfügen einer Spalte das Makro noch funktioniert. Zudem wollte ich Active.Worksheet vermeiden - Wenn du ein paar Tipps für mich hast, wie ich den Code noch effizienter gestalten kann dann bin ich darüber sehr dankbar.

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige