Anzeige
Archiv - Navigation
1828to1832
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

Laufzeitfehler 1004 Intersect Problem

Laufzeitfehler 1004 Intersect Problem
10.05.2021 10:02:48
Sascha
Hallo Zusammen,
ich habe hier ein Code der bezwecken soll, dass sobald in Zeile A eine Änderung vorgenommen wird ( Status von neu auf beendet gesetzt)
die komplette Zeile ausgeschnitten wird auf einer neuen Seite eingefügt wird und die Zeile aus der sie ausgeschnitten wurde gelöscht wird.
Da ich zwei verschiedene trigger Wörter verwende habe ich den code zweimal hintereinander gesetzt.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range
If Not Intersect(Target, Range("A9:A700")) Is Nothing Then
Application.EnableEvents = False
For Each Zelle In Intersect(Target, Range("A9:A700"))
If Zelle.Value = "beendet" Then
Zelle.EntireRow.Copy Tabelle2.Cells(Tabelle2.Rows.Count, 1).End(xlUp).Offset(1).EntireRow
Zelle.EntireRow.Delete
Application.CutCopyMode = False
End If
Next
Application.EnableEvents = True
End If
If Not Intersect(Target, Range("A9:A700")) Is Nothing Then
Application.EnableEvents = False
For Each Zelle In Intersect(Target, Range("A9:A700"))
If Zelle.Value = "abgelehnt" Then
Zelle.EntireRow.Copy Tabelle3.Cells(Tabelle3.Rows.Count, 1).End(xlUp).Offset(1).EntireRow
Zelle.EntireRow.Delete
Application.CutCopyMode = False
End If
Next
Application.EnableEvents = True
End If
End Sub
Jetzt kommt beim der Aktion der Laufzeitfehler 1004 mit der Begründung Methode Intersect ist auf _Global fehlgeschlagen. und die zweite "If Not Intersect(Target, Range("A9:A700")) Is Nothing Then" Zeile wird gelb markiert.
Kann mir da jemand sagen was da falsch ist, bzw auch wie ich das lösen kann?
Danke LG Sascha

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 1004 Intersect Problem
10.05.2021 10:14:32
Daniel
Hi
ich vermute mal, es liegt daran, dass der Zellbereich Target zu beginn festgelegt wird.
wenn du jetzt daraus Zellen löschst und dann nochmal darauf zugreifen willst, dann gibts den Fehler, weil es diese Zellen nicht mehr gibt.
das löschen der Zeilen solltest du daher am Ende machen.
ich würde das auch eher so strukturieren:

If Not Intersect(Target, Range("A9:A700")) Is Nothing Then
For each Zelle in Intersect(Target, Range("A9:A700")
if Zelle.Value = "beendet" then
Zelle.EntireRow.Copy Tabelle2.Cells(Tabelle2.Rows.Count, 1).End(xlUp).Offset(1)
elseif Zelle.Value = "abgelehnt" then
Zelle.EntireRow.Copy Tabelle3.Cells(Tabelle3.Rows.Count, 1).End(xlUp).Offset(1)
end if
next
For each Zelle in Intersect(Target, Range("A9:A700")
if Zelle.Value = "beendet" or Zelle.Value = "abgelehnt" Then
Zelle.EntireRow.Delete
end if
next
end if
Gruß Daniel
Anzeige
AW: Laufzeitfehler 1004 Intersect Problem
10.05.2021 10:26:56
Sascha
Hallo Daniel,
danke dass du dich dem Problem so schnell angenommen hast.
Ganz hat dein Code nicht funktioniert. Da hinter (Target, Range("A9:A700") noch ein ")" gefehlt hat.
Und aus irgend einem Grund hat er wieder das gleiche Problem gehabt.
Allerdings habe ich deinen Denkansatz weiterverfolgt und den Code so geschrieben:

Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range
If Not Intersect(Target, Range("A9:A700")) Is Nothing Then
For Each Zelle In Intersect(Target, Range("A9:A700"))
If Zelle.Value = "beendet" Then
Zelle.EntireRow.Copy Tabelle2.Cells(Tabelle2.Rows.Count, 1).End(xlUp).Offset(1)
Zelle.EntireRow.Delete
ElseIf Zelle.Value = "abgelehnt" Then
Zelle.EntireRow.Copy Tabelle3.Cells(Tabelle3.Rows.Count, 1).End(xlUp).Offset(1)
Zelle.EntireRow.Delete
End If
Next
End If
End Sub
Jetzt funktioniert er wie er soll.
Danke dir für die Unterstützung und dem neuen Denkansatz.
LG Sascha
Anzeige
AW: Laufzeitfehler 1004 Intersect Problem
10.05.2021 10:49:53
Daniel
ich hab da jetzt nicht auf Rechtschreibung geachtet.
Das Codebeispiel war für dich zum Lesen - Verstehen - Selber schreiben gedacht.
Gruß Daniel
AW: Laufzeitfehler 1004 Intersect Problem
10.05.2021 22:55:28
GerdL
Moin Sascha,
schalte die Ereignisse temporär aus.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range
If Not Intersect(Target, Range("A9:A700")) Is Nothing Then
For Each Zelle In Intersect(Target, Range("A9:A700"))
If Zelle.Value = "beendet" Then
Application.EnableEvents = False
Zelle.EntireRow.Copy Tabelle2.Cells(Tabelle2.Rows.Count, 1).End(xlUp).Offset(1)
Zelle.EntireRow.Delete
ElseIf Zelle.Value = "abgelehnt" Then
Application.EnableEvents = False
Zelle.EntireRow.Copy Tabelle3.Cells(Tabelle3.Rows.Count, 1).End(xlUp).Offset(1)
Zelle.EntireRow.Delete
End If
Next
Application.EnableEvents = True
End If
End Sub
Gruß Gerd
Anzeige
AW: Laufzeitfehler 1004 Intersect Problem
10.05.2021 23:15:43
Daniel
Hi Gerd
naja, die Events hat Sascha doch ausgeschaltet.
und das programmiertechnisch eleganter gelöst als du.
schau dir mal an, wo er und du die jeweiligen Befehle platziert habt.
man sollte da schon konsequent bleiben, Entweder innerhalb der Schleife bei jedem Umlauf, oder außerhalb der Schleife, so dass die Einstellung über den ganzen Schleifenumlauf gilt.
Aber das zu Mischen ist inkonsequent.
m2ct, Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige