Supportnet / Forum / Tabellenkalkulation
Verschieben eine Zeile
Frage
Hallo Exelfreaks
Ich benötige bitte Hilfe bei folgenden Problem.
Ich einer bestimmten Zeile wird als Bestätigung in einer ZELLE ein Wert eingetragen. Mittels VBA wird dann diese Zeile auf ein anderes Exelblatt kopiert.
Ich möchte aber erreichen, daß die Zeile verschoben wird. Mein VBA-Code füge ich mal zum besseren Verstehen bei:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zeile As Variant
ActiveSheet.Unprotect
Sheets("Index").Select
ActiveSheet.Unprotect
Sheets("Arztrechnungen").Select
Application.ScreenUpdating = False
Set Target = Intersect(Target, Range("G8:G53"))
If Target Is Nothing Then
Exit Sub
End If
If ActiveCell = "" Then
Exit Sub
Else
Zeile = ActiveCell.Row
Rows(Zeile).Copy
Sheets("Index").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteFormulas, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End If
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("Index").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("Arztrechnungen").Select
Application.ScreenUpdating = True
End Sub
Vielen Dank schon mal im Voraus
ACR
Antwort 1 von nighty
hi tuccon :-)
was spricht dagegen nach dem kopieren die zeile zu loeschen ?
gruss nighty
was spricht dagegen nach dem kopieren die zeile zu loeschen ?
gruss nighty
Antwort 2 von tuccon2003
Hi nighty
Das Problem ist nicht , daß die Zeile von Blatt 1 kopiert wird, sondern das sie im Anschluß nach dem Kopieren nach Blatt 2 gelöscht wird....
Oder anders ausgedrückt: Die Zeile von Blatt 1 soll nach Blatt 2 verschoben werden.
Vielleicht kann man den Code entsprechend ändern?
Gruß ACR
Das Problem ist nicht , daß die Zeile von Blatt 1 kopiert wird, sondern das sie im Anschluß nach dem Kopieren nach Blatt 2 gelöscht wird....
Oder anders ausgedrückt: Die Zeile von Blatt 1 soll nach Blatt 2 verschoben werden.
Vielleicht kann man den Code entsprechend ändern?
Gruß ACR
Antwort 3 von nighty
hi tuccon :-)
verschieben ist nix anderes wie kopieren mit anschliessenden löschen
gruss nighty
rem copy zeile
Rows(Zeile).Copy
Sheets("Index").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteFormulas, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
nach dieser
rem löschzeile
Sheets("Arztrechnungen").Rows(Zeile).Delete Shift:=xlUp
verschieben ist nix anderes wie kopieren mit anschliessenden löschen
gruss nighty
rem copy zeile
Rows(Zeile).Copy
Sheets("Index").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteFormulas, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
nach dieser
rem löschzeile
Sheets("Arztrechnungen").Rows(Zeile).Delete Shift:=xlUp
Antwort 4 von tuccon2003
Hi nighty
Zunächst mal vielen Dank für das schnelle Antworten.
Werde die Änderung im Code morgen ausprobieren. Hoffe es klappt so...
Schönen Abend (Eventuell bis Morgen)
ACR
Zunächst mal vielen Dank für das schnelle Antworten.
Werde die Änderung im Code morgen ausprobieren. Hoffe es klappt so...
Schönen Abend (Eventuell bis Morgen)
ACR
Antwort 5 von tuccon2003
Hi nighty
Habe heute Deinen Vorschlag ausprobiert.
Ergebnis: Es funktioniert, wenn man anschließend
ALLE Zeilen löschen will. Ich möchte aber nur EINE bestimmte Zeile löschen. Bedingung war hierzu, daß in Zelle G8 bis G53 ein Eintrag vorhanden ist.
Vielleicht kann ich ja noch mal auf Deine Hilfe hoffen.
Gruß ACR
Habe heute Deinen Vorschlag ausprobiert.
Ergebnis: Es funktioniert, wenn man anschließend
ALLE Zeilen löschen will. Ich möchte aber nur EINE bestimmte Zeile löschen. Bedingung war hierzu, daß in Zelle G8 bis G53 ein Eintrag vorhanden ist.
Vielleicht kann ich ja noch mal auf Deine Hilfe hoffen.
Gruß ACR
Antwort 6 von nighty
hi tuccon :-)
gruss nighty
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zeile As Variant
ActiveSheet.Unprotect
Sheets("Index").Select
ActiveSheet.Unprotect
Sheets("Arztrechnungen").Select
Application.ScreenUpdating = False
Set Target = Intersect(Target, Range("G8:G53"))
If Target Is Nothing Then
Exit Sub
End If
If ActiveCell = "" Then
Exit Sub
Else
Zeile = ActiveCell.Row
Rows(Zeile).Copy
Sheets("Index").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteFormulas, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
rem hier wird die kopierte zeile gelöscht
Sheets("Arztrechnungen").Rows(Zeile).Delete Shift:=xlUp
Application.CutCopyMode = False
End If
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("Index").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("Arztrechnungen").Select
Application.ScreenUpdating = True
End Sub
gruss nighty
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zeile As Variant
ActiveSheet.Unprotect
Sheets("Index").Select
ActiveSheet.Unprotect
Sheets("Arztrechnungen").Select
Application.ScreenUpdating = False
Set Target = Intersect(Target, Range("G8:G53"))
If Target Is Nothing Then
Exit Sub
End If
If ActiveCell = "" Then
Exit Sub
Else
Zeile = ActiveCell.Row
Rows(Zeile).Copy
Sheets("Index").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteFormulas, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
rem hier wird die kopierte zeile gelöscht
Sheets("Arztrechnungen").Rows(Zeile).Delete Shift:=xlUp
Application.CutCopyMode = False
End If
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("Index").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("Arztrechnungen").Select
Application.ScreenUpdating = True
End Sub
Antwort 7 von tuccon2003
Hi nighty
Vielen Dank für Deine Bemühungen
Es funktioniert nur dann, wenn in der letzten Zeile des ausgefüllten Bereiches ein Eintrag gemacht wird, ansonsten werden wie in Deinem Beispiel vorher ALLE Zeilen kopiert und anschließend gelöscht.Zum besseren Verständnis: Es handelt sich bei der Tabelle um Rechnungssätze, die erst nach Blatt 2 übernommen werden, wenn der ausstehende Betrag gutgeschrieben wurde und in Zelle G8 für diese Zeile bestätigt wurde.
Ist noch Hilfe möglich??
Gruß ACR
Vielen Dank für Deine Bemühungen
Es funktioniert nur dann, wenn in der letzten Zeile des ausgefüllten Bereiches ein Eintrag gemacht wird, ansonsten werden wie in Deinem Beispiel vorher ALLE Zeilen kopiert und anschließend gelöscht.Zum besseren Verständnis: Es handelt sich bei der Tabelle um Rechnungssätze, die erst nach Blatt 2 übernommen werden, wenn der ausstehende Betrag gutgeschrieben wurde und in Zelle G8 für diese Zeile bestätigt wurde.
Ist noch Hilfe möglich??
Gruß ACR
Antwort 8 von tuccon2003
Hallo ihr Freaks....
Weiß denn keiner eine Lösung für mein Problem????
Wäre schön, wenn ich bei Euch Hilfe bekommen würde.
Gruß
tuccon2003
Weiß denn keiner eine Lösung für mein Problem????
Wäre schön, wenn ich bei Euch Hilfe bekommen würde.
Gruß
tuccon2003
Antwort 9 von Beverly
Hi,
vielleicht hilft dir dieser Code
Bis später,
Karin
vielleicht hilft dir dieser Code
Private Sub Worksheet_Change(ByVal Target As Range)
Dim loZeile As Long, loLetzte As Long
Application.ScreenUpdating = False
Application.EnableEvents = False
With Worksheets("Index")
.Unprotect
loLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count)
End With
With Worksheets("Arztrechnungen")
.Unprotect
Set Target = Intersect(Target, Range("G8:G53"))
If Target Is Nothing Then GoTo Ende
loZeile = Target.Row
Rows(loZeile).Copy
Worksheets("Index").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteFormulas, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Rem hier wird die kopierte zeile gelöscht
.Rows(loZeile).EntireRow.Delete
Application.CutCopyMode = False
Ende:
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End With
Application.EnableEvents = True
Worksheets("Index").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End SubBis später,
Karin
Antwort 10 von tuccon2003
Hi Karin
Das war meine Rettung....
Genau so hatte ich es mir vorgestellt. Code eingefügt, ausprobiert und Ergebnis:
ES FUNKTIONIERT !!!!
Super Vielen Dank für die Hilfe
M.f.G.
tuccon2003
Das war meine Rettung....
Genau so hatte ich es mir vorgestellt. Code eingefügt, ausprobiert und Ergebnis:
ES FUNKTIONIERT !!!!
Super Vielen Dank für die Hilfe
M.f.G.
tuccon2003

