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

Zeile verschieben bei Änderung durch Funktion

Zeile verschieben bei Änderung durch Funktion
04.08.2017 08:27:33
Stefan
Hallo,
ich habe folgendes Problem: Ich möchte mit dem Code, den ich online gefunden habe, eine Zeile in eine andere Tabelle verschieben. Dies soll geschehen, sobald sich der Inhalt einer Zelle in Spalte "N" auf "free" ändert. Das klappt soweit sehr gut. Allerdings möchte ich, dass die Zeile dann kopiert wird, sobald sich der Inhalt der Zelle durch eine Funktion ändert, also nicht manuell durch eine Zellenänderung. Dies klappt mit dem Code leider nicht. Kann mir jemand dazu helfen?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range
Dim lRow, zRow As Long
lRow = Sheets("MU3 Product Control").Range("A3000").End(xlUp).Row
zRow = Sheets("Tabelle2").Range("A3000").End(xlUp).Row + 1
Set Bereich = Range("N2:N" & lRow) '*** hier eintragen wo das Datum steht
If Not Intersect(Target, Bereich) Is Nothing Then
If (Target.Value) = "free" And Target.Value  "" Then
With Range("A" & Target.Row & ":T" & Target.Row) '*** hier eintragen was kopiert werden  _
soll
.Copy
Sheets("Tabelle2").Paste Destination:=Sheets("Tabelle2").Range("A" & zRow)
If IsNumeric(Sheets("Tabelle2").Range("A" & zRow - 1)) = True Then
Sheets("Tabelle2").Range("A" & zRow) = Sheets("Tabelle2").Range("A" & zRow).Offset(- _
1, 0) + 1
Else
Sheets("Tabelle2").Range("A" & zRow) = 1
End If
Application.EnableEvents = False
.Delete shift:=xlShiftUp
Sheets("MU3 Product Control").Range("A" & lRow).Delete
End With
End If
End If
Application.EnableEvents = True
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: kein Change-Event
04.08.2017 08:37:44
Fennek
Hallo,
wenn sich das Ergebnis einer Formel-Berechnung ändert, wird KEIN change-event ausgelöst.
Alternativen sind, das "change_selection" zu nutzen, aber das ist bei größeren Tabellen sehr rechenintensiv.
Eine andere Möglichkeit ist, die Prüfung von Hand anzustoßen.
mfg
AW: kein Change-Event
04.08.2017 08:40:23
Stefan
Hallo Fennek,
danke für die schnelle Hilfe. Wie kann ich das "change_selection" am besten in den Code einbauen? So groß ist die Tabelle nicht.
Das ist so nicht möglich
04.08.2017 08:43:35
Michael
Hallo Stefan!
Du setzt mit Deinem bisherigen Makro auf eine sogenannte Ereignis-Prozedur; d.h. das Makro wird durch bestimmte Ereignisse (Tätigkeiten, Aktionen in Excel) gestartet, in Deinem Fall durch eine Änderung im Arbeitsblatt (z.B. manuelle Zell-Eingabe).
Nicht alle Aktionen auf einem Blatt lösen allerdings ein solches Ereignis aus - bspw. wenn sich ein Zellwert aufgrund einer Formel-(Berechnung) ändert. D.h. eine Möglichkeit besteht darin, die Berechnungsschritte der Formel, also alle einfließenden Zellen, ebenfalls per Makro zu überprüfen, und sofern da eine Zelle dabei ist, die eine manuelle Befüllung erfordert, das Makro damit anzustoßen.
Oder es kann gänzlich nicht auf das Change-Ereignis zurückgegriffen werden, und es braucht einen anderen Auslöser (z.B. eine Schaltfläche...).
Dazu ist aber ohne Kenntnis Deiner konkreten Gegebenheiten in der Mappe kaum Auskunft zu geben.
LG
Michael
Anzeige
AW: Das ist so nicht möglich
04.08.2017 08:48:10
Stefan
Hallo Michael,
ich habe den Code auf "Worksheet_ChangeSelection" umgestellt. Jetzt funktioniert das kopieren der Zeile sobald ich auf die jeweilige Zelle in Spalte N klicke. Vorerst reicht mir das. Ich werde meine sehr rudimentären VBA-Kenntnisse etwas aufbessern und dann nochmal auf das Thema zurückkommen. Vielen Danke erstmal!
Alles klar! Viel Erfolg, owT
04.08.2017 08:52:21
Michael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige