VBA: aktuelle Zeile kopieren und darunter einfügen

Bild

Betrifft: VBA: aktuelle Zeile kopieren und darunter einfügen
von: mikr8
Geschrieben am: 13.07.2015 11:33:11

hallo,
ich habe folgendes anliegen...
ich habe eine liste mit verschiedenen Kriterien, sobald ich in Spalte L ein X eintrage, möchte ich, dass eine neue Zeile darunter eingefügt wird und die Werte aus Spalten A bis I übernommen werden.
ist das möglich?
Kann mir hierbei jemand helfen?
danke!

Bild

Betrifft: Nix VBA - Tabelle!
von: EtoPHG
Geschrieben am: 13.07.2015 11:47:21
Hallo mikr8
Das lässt sich ohne VBA elegant mit einer Tabelle lösen!
Im Datenbereich Ctrl-T und fertig.
Tab (Ctrl-I) auf der letzten Tabellenzelle fügt automatisch eine neu Zeile ein!
Gruess Hansueli

Bild

Betrifft: AW: zum testen
von: Bernd
Geschrieben am: 13.07.2015 11:51:36
Hi!
nicht getestet, aber das hier habe ich gefunden:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zeile As Long
' nur beim Ändern einer Zelle
If Target.Count > 1 Then Exit Sub
Zeile = Target.Row
'nur bei Änderungen in Spalte 12(L)
If Target.Column = 12 Then
Application.EnableEvents = False
Range(Cells(Zeile, 1), Cells(Zeile, 11)).Copy
Range(Cells(Zeile + 1, 1), Cells(Zeile + 1, 11)).Insert xlDown
With Application
.CutCopyMode = False
.EnableEvents = True
End With
End If
End Sub
sollte bei jedem Eintrag in L funktionieren, aber ob es so passt, kann ich auch nicht recht sagen.
mfg Bernd

Bild

Betrifft: AW: zum testen - Nachtrag
von: Bernd
Geschrieben am: 13.07.2015 11:57:36
Hi!
für A-I so:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zeile As Long
' nur beim Ändern einer Zelle
If Target.Count > 1 Then Exit Sub
Zeile = Target.Row
'nur bei Änderungen in Spalte 12(L)
If Target.Column = 12 Then
Application.EnableEvents = False
Range(Cells(Zeile, 1), Cells(Zeile, 9)).Copy
Range(Cells(Zeile + 1, 1), Cells(Zeile + 1, 9)).Insert xlDown
With Application
.CutCopyMode = False
.EnableEvents = True
End With
End If
End Sub
lg Bernd

Bild

Betrifft: AW: zum testen
von: mikr8
Geschrieben am: 13.07.2015 12:09:24
Danke,
Mit diesem Code wird bei jeder Änderung eine Zeile unterhalb eingefügt.
Jedoch werden alle Zelleninhalte nicht nur A bis I kopiert und es ist wie gesagt bei jeder Änderung.
Wie muss ich den code abändern, sodass dies ausschließlich bei einem "x" geschieht?
danke!

Bild

Betrifft: AW: zum testen
von: Bernd
Geschrieben am: 13.07.2015 12:12:07
Hi,
für A-I musst Du meinen 2 Code verwenden. Wie das mit einem X funktioniert, da muss ein VBA Profi ran, ich hab den Code nur mal als Ansatz reingestellt um diesen eventuell dementsprechend zu erweitern.
lg Bernd

Bild

Betrifft: AW: zum testen
von: Bernd
Geschrieben am: 13.07.2015 12:29:51
Hallo nochmals,
mit der Hilfe von Hansueli geht es bei mir so:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zeile As Long
' nur beim Ändern einer Zelle
If Target.Count > 1 Then Exit Sub
Zeile = Target.Row
'nur bei Änderungen in Spalte 12(L)
If Target.Column = 12 And Target.Cells(1, 1) = "x" Then
Application.EnableEvents = False
Range(Cells(Zeile, 1), Cells(Zeile, 9)).Copy
Range(Cells(Zeile + 1, 1), Cells(Zeile + 1, 9)).Insert xlDown
With Application
.CutCopyMode = False
.EnableEvents = True
End With
End If
End Sub
lg Bernd

Bild

Betrifft: ...na dann...
von: EtoPHG
Geschrieben am: 13.07.2015 12:21:43
Wer nicht hören will muss fühlen, mikr8 ;-)

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 12 And Target.Count = 1 And _
       IsEmpty(Target.Offset(1, -11)) And Target.Cells(1, 1) = "x" Then
        Application.EnableEvents = False
        Range(Cells(Target.Row, 1), Cells(Target.Row, 10)).Copy _
          Cells(Target.Row, 1).Offset(1)
        Application.EnableEvents = True
    End If
End Sub

Gruess Hansueli

Bild

Betrifft: AW: ...na dann...
von: mikr8
Geschrieben am: 13.07.2015 13:49:23
Danke!
die Mischung war genau das was ich gesucht habe!

 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA: aktuelle Zeile kopieren und darunter einfügen"