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

If Not Intersect(Target, Range

If Not Intersect(Target, Range
25.01.2019 12:47:42
Marco
Hallo liebes Forum
Habe in Spalte 2 also B5:B26 Exceldropdows erstellt, die bei einem Wechsel
den Listeneintrag in der Spalte suchen soll und in der Activen Zeile einfügen soll.
Leider stürzt Excel bei meinem Code leider ab.Woran kann es liegen?
Hier mal der Code
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim i As Integer
Dim j As Integer
For i = 5 To 26
If Cells(i, 2) = Cells(ActiveCell.Row, 2) Then
If Not i = ActiveCell.Row Then
If Not Intersect(Target, Range("B5:B26")) Is Nothing Then
zeile1 = ActiveCell.Row
zeile2 = i
Range("A5").Select
Selection = ActiveCell
For j = 2 To 366
Cells(zeile1, j) = Cells(zeile2, j)
Cells(zeile2, j) = ""
Next j
End If
End If
End If
Next i
End Sub

23
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: If Not Intersect(Target, Range
25.01.2019 12:58:11
Daniel
Hallo Marco,
da fehlt das Application.ScreenUpdating = True am Ende. Weiß aber nicht ob das der Grund ist.
Gruß
Daniel
AW: If Not Intersect(Target, Range
25.01.2019 13:02:10
Marco
daran liegt es nicht
AW: If Not Intersect(Target, Range
25.01.2019 13:11:16
Daniel
Habs mal bei mir getestet, natürlich ohne Daten.
zeile1 und zeile2 sind nicht deklariert, falls das bei dir nicht hochkommt würde ich dringend empfehlen Option Explicit einzuschalten.
Der Code läuft natürlich einige Momente aber einen Absturz oder andere Fehler hatte ich nicht. Kannst du noch die Tabelle hochladen? Ansonsten bräuchten wir noch mehr Infos um da weiter zu kommen.
AW: If Not Intersect(Target, Range
25.01.2019 13:13:30
Marco
zeile1 und zeile2 sind unter Option Explicit deklariert
Anzeige
AW: If Not Intersect(Target, Range
25.01.2019 13:15:06
Daniel
Hast du aber nicht geschrieben. Mit Teilinfos macht man es Helfern nicht gerade leichter.
AW: If Not Intersect(Target, Range
25.01.2019 13:13:55
Daniel
Scheint ja einige Lösungsansätze zu geben, insofern nicht mehr offen.
AW: If Not Intersect(Target, Range
25.01.2019 13:16:46
Marco
Code läuft, aber für einen Moment erhält Excel keine Rückmeldung und dann läuft Excel wieder mit ausgeführten Code
AW: If Not Intersect(Target, Range
25.01.2019 13:18:27
onur
Poste doch endlich mal die Datei.
AW: If Not Intersect(Target, Range
25.01.2019 13:30:20
onur
Was soll genau passieren, wenn was passiert?
Soll heissen: Wozu dient das Makro ?
Bitte ohne irgendwelche VBA- Ausdrücke zu verwenden.
z.B.:"Wenn ich in Spalte B das und das eingebe, soll das und das passieren".
Anzeige
AW: If Not Intersect(Target, Range
25.01.2019 13:33:19
Marco
Bei einem Schichttausch soll die gesammte Zeile in die aktive Zeile übernommen werden und die gefundene Zeile gelöscht werden!
AW: If Not Intersect(Target, Range
25.01.2019 13:34:38
Daniel
Funktioniert bei mir jetzt auch mit deiner Tabelle. Hast du schon probiert Events auszustellen?
AW: If Not Intersect(Target, Range
25.01.2019 13:36:31
Marco
Funktioniert jetzt tadellos! Wie gesagt hatte einen Rechtschreibfehler drin!
Aber nochmals danke!
AW: If Not Intersect(Target, Range
25.01.2019 13:20:10
Daniel
Onur und Rudi haben doch schon klargestellt, dass es Probleme mit Dauerschleifen gibt. Setz doch da erst mal an.
AW: If Not Intersect(Target, Range
25.01.2019 13:09:55
onur
Target ist die Zelle, die das Change-Event ausgelöst hat, aber sie wird nirgendwo benutzt, d.h. es läuft immer das gleiche, egal welche Zelle verändert wurde.
Da EnableEvents= true ist, wird jedes mal, wenn das Makro eine Zelle im Range("B5:B26") verändert hat, das Change-Event wieder ausgelöst und du hast eine Endlosschleife.
Das Change-Event sollte man nur verwenden, wenn man es wirklich versteht und auch wirlich weiss, was man da tut.
Anzeige
AW: If Not Intersect(Target, Range
25.01.2019 13:06:00
Rudi
Hallo,
der Code ruft sich hier
            For j = 2 To 366
Cells(zeile1, j) = Cells(zeile2, j)
Cells(zeile2, j) = ""
Next j

immer wieder selbst auf.
Setze Application.Enabeleevents =False davor. Wieder auf True stellen nicht vergessen.
Gruß
Rudi
AW: If Not Intersect(Target, Range
25.01.2019 13:10:26
Marco
laufzeitfehler 438
AW: If Not Intersect(Target, Range
25.01.2019 13:23:20
Daniel
Application.EnableEvents = False
Cells(zeile1, j) = Cells(zeile2, j)
Cells(zeile2, j) = ""
Application.EnableEvents = True
Damit läuft er bei mir in einer Sekunde durch - natürlich immer noch ohne Daten.
AW: If Not Intersect(Target, Range
25.01.2019 13:30:54
Marco
Sorry, hatte ein Rechtschreibfehler drin!
Funktioniert jetzt!
Vielen dank erst mal für die schnelle Hilfe
Anzeige
AW: If Not Intersect(Target, Range
25.01.2019 13:41:45
Marco
Funktioniert super.
Danke für die hilfe
AW: If Not Intersect(Target, Range
25.01.2019 13:09:24
Luschi
Hallo Marco,
in diesem Code geht so Einiges schief:
- Target repräsentiert als Übergabeparameter die Zelle(n)
- in der der Zellwert sich verändert hat - was willst Du da mit ActiveCell?
- denn zu diesem Zeitpunkt steht ActiveCell für die Zelle, wohin der Cursor
  nach der Eingabe gesprungen ist
- und somit haben Target & ActiveCell nichts miteinaner zu tun
- und Target ist das Maß aller Dinge
- man muß zuerst prüfen, ob Target nur aus einer Zelle besteht

If Target.Count > 1 Then
Exit Sub
Endif
- und dann If Not (Intersect(Target, Range("B5:B26")) Is Nothing) Then
Vielleicht entschließt Du Dich doch, eine kleine Demodatei mit 1-2 Gültigkeits-Datenzellen hier einzustellen.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: If Not Intersect(Target, Range
25.01.2019 13:59:39
Marco
Hallo Luschi
wenn ich den rausnehmen würde, würde ja der Code bei Änderung bei jeder Zelle ausgeführt.
soll aber nur in den Zellen B5:B26 ausgeführt werden!
Bin auch kein Profi in VBA, nur ein kleiner Anfänger!
Funktioniert jetzt aber so
For j = 2 To 366
Application.EnableEvents = False
Cells(zeile1, j) = Cells(zeile2, j)
Cells(zeile2, j) = ""
Application.EnableEvents = True
Next j
AW: If Not Intersect(Target, Range
25.01.2019 15:03:24
onur
Frage zu deiner Datei:
Müsste nicht jeder Name nur einmal auftauchen?
Oder haben Mitarbeiter mehrere Schichten?

48 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige