Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
840to844
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
840to844
840to844
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zeilen auf bestimmte Blätter verschieben

Zeilen auf bestimmte Blätter verschieben
03.02.2007 13:36:50
H.Schult
Hallo Exelfreaks
Ich habe eine Exelmappe (Abrechnung) mit folgenden Blättern:
1. Arztrechnungen
2. 2006
3. 2007
4. 2008
5. 2009
6. 2010
7. Arztbesuche
Ab Spalte A8 -Arztrechnungen- werden Daten eingetragen. In die Spalte F und G werden Daten zu einem späteren Zeitpunkt zugetragen, die ich extern bekomme. Letzter Eintrag ist in Spalte G zu tätigen. Wenn dieser Eintrag durchgeführt wird, wird die gesammte Zeile anschließend auf das Blatt 2007 verschoben. Hier müßte vorher durch das Programm geprüft werden,auf welches Blatt die Zeile kopiert werden soll.In Zeile L8 wird im Laufe der Dateneingabe folgendes eingetragen: 4-2007. Vielleicht kann man hieraus die Abfrage nach dem Speicherort ableiten?
folgender Code ist bereits in der Mappe vorhanden:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim loZeile As Long, LoLetzte As Long
Application.ScreenUpdating = False
Application.EnableEvents = False
With Worksheets("2007")
.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:G58"))
If Target Is Nothing Then GoTo Ende
loZeile = Target.Row
Rows(loZeile).Copy
Worksheets("2007").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("2007").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub

Ich wäre dankbar, wenn mir in dieser Sache geholfen werden kann, da ich absoluter Anfänger in VBA bin.
Gruß H.Schult

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen auf bestimmte Blätter verschieben
03.02.2007 14:02:57
Daniel
Hallo
geht eigentlich relativ einfach:
- zustätzliche String-Variable anlegen (Bspw strBlatt)
- dieser Variable die Jahreszahl aus der Zelle L8 zuweisen: strBlatt = right(cells(loZeile,12), 4).value
- jedesmal anstelle von WORKSHEET("2007") dann WORKSHEET(strBlatt) verwenden.
allerdings solltest du sicherstellen, daß das Kopieren erst startet, wenn in L8 auch was eingegeben wurde
Gruß, Daniel
AW: Zeilen auf bestimmte Blätter verschieben
03.02.2007 16:16:35
H.Schult
Hallo Daniel
Leider reichen meine Kenntnisse von VBA nicht soweit. Aus diesem Grunde hatte ich meinen Code beigefügt (den hatte ich auch in einem Exel-Forum bekommen). Es wäre sehr freundlich, wenn Du diesen Code für mich anpassen würdest.
M.f.G.
H.Schult
Anzeige
AW: Zeilen auf bestimmte Blätter verschieben
03.02.2007 17:08:09
Daniel
Hallo
nur recht ungern, weil ich ja keine möglichkeit habe, das ganze zu testen.
außderem halte ich es für nicht für gut, wenn mann Code verwendet, den man nicht versteht und bei bedarf korregieren und anpassen kann, insbesondere dann nicht, wenn ersters auch zutrifft.
aber ich kanns ja mal versuchen:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim loZeile As Long
Dim sh As Worksheet
Dim chk As Boolean
loZeile = Target.Row
'--- Prüfungen------
If Target.Column <> 7 Then Exit Sub
If loZeile < 8 Or loZeile > 58 Then Exit Sub
chk = False
For Each sh In ActiveWorkbook.Sheets
If sh.Name = Right(Cells(loZeile, 12), 4) Then
chk = True
Exit For
End If
Next
If chk = False Then
MsgBox "kein passendes Arbeitsblatt gefunden"
Exit Sub
End If
'----Kopieren und löschen-----------------------
Application.EnableEvents = False
sh.Unprotect
Me.Unprotect
Rows(loZeile).Copy
sh.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteFormulas
Rows(loZeile).EntireRow.Delete
Application.CutCopyMode = False
Me.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
sh.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.EnableEvents = True
End Sub

wie gesagtn nicht getestet.
außderdem hab ich ein bisschen aufgeräumt, das unnötige entfernt und etwas klarer strukturiert
gruß, Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige