Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro automatisch bei neuer Zeile ausführen

Makro automatisch bei neuer Zeile ausführen
30.04.2019 12:56:44
AxelF1977
Hallo zusammen,
ich hoffe Ihr könnt mir helfen. Ich habe ein wunderbares Makro, welches aus bestimmten spalten, Wertem in die Zelle rechts daneben kopiert. funktioniert wunderbar.
Nun soll dieses Makro automatisch beim Einfügen einer neuen Zeile ausgeführt werden. Aber nur dann. Ich bekomme es leider nicht hin.
Habt Ihr eine Idee? Die Tabelle ist als Tabelle formatiert, evtl. ist die Info noch wichtig
 _
Sub Leer()
Dim i As Long
Application.ScreenUpdating = False
With Sheets("Tabelle1")        'Tabellenname anpassen
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(i, "D") = "" Then .Cells(i, "D") = .Cells(i, "C")
If .Cells(i, "F") = "" Then .Cells(i, "F") = .Cells(i, "E")
If .Cells(i, "R") = "" Then .Cells(i, "R") = .Cells(i, "G")
If .Cells(i, "S") = "" Then .Cells(i, "S") = .Cells(i, "H")
If .Cells(i, "J") = "" Then .Cells(i, "J") = .Cells(i, "I")
If .Cells(i, "L") = "" Then .Cells(i, "L") = .Cells(i, "K")
If .Cells(i, "T") = "" Then .Cells(i, "T") = .Cells(i, "M")
If .Cells(i, "U") = "" Then .Cells(i, "U") = .Cells(i, "N")
If .Cells(i, "AC") = "" Then .Cells(i, "AC") = .Cells(i, "AB")
Next i
End With
Application.ScreenUpdating = True
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Makro automatisch bei neuer Zeile ausführen
30.04.2019 13:10:27
Daniel
Halo Axel,
ins Tabellenblatt:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Target.EntireRow.Address Then
*Dein Code*
End If
End Sub
Löst allerdings auch aus, wenn du eine ganz Zeile entfernst. Ist das ein Problem?
Gruß
Daniel
AW: Makro automatisch bei neuer Zeile ausführen
30.04.2019 15:40:46
AxelF1977
Hallo Daniel,
danke für die Antwort. Danke an meine beiden lieben Kollegen, die in meinem Namen hier die Anfrage gestellt haben (und mich in Erklärungsnot in einem anderen Forum gebracht haben).
Das Makro soll immer nur für die neue Zeile ausgeführt werden, sonst arbeitet sich die Tabelle kaputt. Ich habe es soweit herausgefunden, das ich das eigentliche Macro per Call aufrufe. Aktuell tut es das aber für das ganze Tabellenblatt
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Call Leer
End Sub

Anzeige
AW: Makro automatisch bei neuer Zeile ausführen
30.04.2019 15:46:25
Daniel
Du brauchst es nicht per Call aufzurufen, wenn du den Code reinschreibst macht es keinen Unterschied und ist übersichtlicher (meiner Meinung nach).
Wenn du nur die aktuelle Zeile mit dem Code belegen möchtest, ist es ja viel einfacher. Dann ändere deinen Code so:
 With Sheets("Tabelle1")        'Tabellenname anpassen
If .Cells(Target.Row, "D") = "" Then .Cells(Target.Row, "D") = .Cells(Target.Row, "C")
End With
Das muss dann aber natürlich ins Arbeitsblatt in den Worksheet_Change Code (da, wo bei mir *Dein Code* steht).
Gruß
Daniel
Anzeige
AW: Makro automatisch bei neuer Zeile ausführen
30.04.2019 16:44:38
AxelF1977
Ach, ich finde das mit dem call gar nicht übel.
aber gehen tut es nicht, was habe ich denn falsch gemacht?
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Target.EntireRow.Address Then
Call Leer
End If
End Sub
Sub Leer()
Dim i As Long
Application.ScreenUpdating = False
With Sheets("Tabelle1")        'Tabellenname anpassen
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(Target.Row, "D") = "" Then .Cells(Target.Row, "D") = .Cells(Target.Row, "C")
If .Cells(Target.Row, "F") = "" Then .Cells(Target.Row, "F") = .Cells(Target.Row, "E")
If .Cells(Target.Row, "R") = "" Then .Cells(Target.Row, "R") = .Cells(Target.Row, "G")
If .Cells(Target.Row, "S") = "" Then .Cells(Target.Row, "S") = .Cells(Target.Row, "H")
If .Cells(Target.Row, "J") = "" Then .Cells(Target.Row, "J") = .Cells(Target.Row, "I")
If .Cells(Target.Row, "L") = "" Then .Cells(Target.Row, "L") = .Cells(Target.Row, "K")
If .Cells(Target.Row, "T") = "" Then .Cells(Target.Row, "T") = .Cells(Target.Row, "M")
If .Cells(Target.Row, "U") = "" Then .Cells(Target.Row, "U") = .Cells(Target.Row, "N")
If .Cells(Target.Row, "AC") = "" Then .Cells(Target.Row, "AC") = .Cells(Target.Row, "AB" _
)
Next i
End With
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Makro automatisch bei neuer Zeile ausführen
30.04.2019 22:32:34
AxelF1977
Ich habe es jetzt seit Stunden probiert, leider komme ich zu keinem Ergebnis.
Entweder das Makro füllt die ganze Tabelle, oder nichts. Was mache ich falsch. ich hoffe einer der Profis hier hat eine Idee und Hilfe für mich. Ich wäre wirklich dankbar dafür.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Target.EntireRow.Address Then
Dim i As Long
Application.ScreenUpdating = False
With Sheets("Tabelle1")        'Tabellenname anpassen
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(i, "D") = "" Then .Cells(i, "D") = .Cells(i, "C")
If .Cells(i, "F") = "" Then .Cells(i, "F") = .Cells(i, "E")
If .Cells(i, "R") = "" Then .Cells(i, "R") = .Cells(i, "G")
If .Cells(i, "S") = "" Then .Cells(i, "S") = .Cells(i, "H")
If .Cells(i, "J") = "" Then .Cells(i, "J") = .Cells(i, "I")
If .Cells(i, "L") = "" Then .Cells(i, "L") = .Cells(i, "K")
If .Cells(i, "T") = "" Then .Cells(i, "T") = .Cells(i, "M")
If .Cells(i, "U") = "" Then .Cells(i, "U") = .Cells(i, "N")
If .Cells(i, "AC") = "" Then .Cells(i, "AC") = .Cells(i, "AB")
Next i
End With
Application.ScreenUpdating = True
End If
End Sub
Danke
Anzeige
AW: Makro automatisch bei neuer Zeile ausführen
30.04.2019 22:36:30
AxelF1977
Ich habe gerade gesehen, wenn ich die letzte Zeile lösche, dann füllt er mit folgerndem Code die verbleibenden Zellen richtig aus. Merkwürdig.
Bei neu eingefügten Zellen macht der Code nichts
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
If Target.Address = Target.EntireRow.Address Then
Application.ScreenUpdating = False
With Sheets("Tabelle1")        'Tabellenname anpassen
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(i, "D") = "" Then .Cells(i, "D") = .Cells(i, "C")
If .Cells(i, "F") = "" Then .Cells(i, "F") = .Cells(i, "E")
If .Cells(i, "R") = "" Then .Cells(i, "R") = .Cells(i, "G")
If .Cells(i, "S") = "" Then .Cells(i, "S") = .Cells(i, "H")
If .Cells(i, "J") = "" Then .Cells(i, "J") = .Cells(i, "I")
If .Cells(i, "L") = "" Then .Cells(i, "L") = .Cells(i, "K")
If .Cells(i, "T") = "" Then .Cells(i, "T") = .Cells(i, "M")
If .Cells(i, "U") = "" Then .Cells(i, "U") = .Cells(i, "N")
If .Cells(i, "AC") = "" Then .Cells(i, "AC") = .Cells(i, "AB")
Next i
End With
Application.ScreenUpdating = True
End If
End Sub

Anzeige
AW: Makro automatisch bei neuer Zeile ausführen
30.04.2019 23:52:05
AxelF1977
Und wieder viel zu sehr um die Ecke gedacht, und Daniel hatte die Lösung gepostet.
Danke
Private Sub Worksheet_Change(ByVal Target As Range)
With Sheets("Tabelle1")        'Tabellenname anpassen
If .Cells(Target.Row, "D") = "" Then .Cells(Target.Row, "D") = .Cells(Target.Row, "C")
If .Cells(Target.Row, "F") = "" Then .Cells(Target.Row, "F") = .Cells(Target.Row, "E")
If .Cells(Target.Row, "R") = "" Then .Cells(Target.Row, "R") = .Cells(Target.Row, "G")
If .Cells(Target.Row, "S") = "" Then .Cells(Target.Row, "S") = .Cells(Target.Row, "H")
If .Cells(Target.Row, "J") = "" Then .Cells(Target.Row, "J") = .Cells(Target.Row, "I")
If .Cells(Target.Row, "L") = "" Then .Cells(Target.Row, "L") = .Cells(Target.Row, "K")
If .Cells(Target.Row, "T") = "" Then .Cells(Target.Row, "T") = .Cells(Target.Row, "M")
If .Cells(Target.Row, "U") = "" Then .Cells(Target.Row, "U") = .Cells(Target.Row, "N")
If .Cells(Target.Row, "AC") = "" Then .Cells(Target.Row, "AC") = .Cells(Target.Row, "AB" _
)
End With
End Sub

Anzeige

16 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige