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

Excel-Zeile kopieren und in Tabelle 2/3 eintragen

Excel-Zeile kopieren und in Tabelle 2/3 eintragen
01.11.2016 13:58:44
Grigoryev
Hallo liebe Excel-Anwender,
ich habe in der Tabelle 1 , die aus einigen Spalten besteht.
Meine Frage: wie kann ich die Zeilen A5 - AI1000 nach dem Eintrag des Datums in der Spalte AI automatisch kopieren und in Tabelle 2 (Archiv_2016) in die nächste freie Zeile eintragen lassen?
Aber wenn das Datum von 2017 stehen würde, dann sollen die Zeilen in die Tabelle 3 (Archiv_2017)eingetragen werden.Und so bis 2020.
ich bekomme leider die Funktion oder nicht zu Gange.
Liste sieht etwa so aus:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column  35 Then Exit Sub ' begrenzt die Reaktion auf Aktionen nur in Spalte 35 =  _
Spalte AI
If Target.Row  Date Then ' hier muss der gewünschte  _
Name/Datum rein
'wenn alles passt dann Zeile kopieren
Sheets("Aufträge").Rows(Target.Row).Copy Destination:=Sheets("Archiv_2016").Rows(myLastRow + 1)
End If
MsgBox "Abgeschlossener B-Auftrag ins Archivblatt verschoben"
Application.ScreenUpdating = True
End Sub

Schönen Dank

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel-Zeile kopieren und in Tabelle 2/3 eintragen
01.11.2016 16:24:44
Michael
Hi,
versuch's mal damit:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myLastRow As Long, jahr As Long
' für die letzte Zeile in Archiv
' Deklarationen zuallererst...
If Target.Column  35 Or Target.Row  0 Then
On Error GoTo 0
MsgBox "Archiv_" & jahr & " nicht gefunden."
Exit Sub
End If
On Error GoTo 0
myLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
If myLastRow 
Schöne Grüße,
Michael
AW: Excel-Zeile kopieren und in Tabelle 2/3 eintragen
01.11.2016 16:29:35
fcs
Hallo Grigoryew,
das Makro muss etwa wie folgt aussehen
Falls die Prüfung für das Datum in Spalte 7 (G) nicht nötig ist, dann die entsprechenden Zeilen löschen.
LG
Franz
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wksArchiv As Worksheet
Dim myLastRow As Long ' für die letzte Zeile in Archiv
If Target.Column = 35 Then ' begrenzt die Reaktion auf Aktionen nur in Spalte 35 = _
Spalte AI
If Target.Row >= 5 Then 'begrenzt die Reaktion auf Aktionen nur ab Zeile 5
If Me.Cells(Target.Row, 7).Value  Date Then ' hier muss der gewünschte Name/Datum  _
rein
'Spalte AI auf Datum prüfen
If IsDate(Me.Cells(Target.Row, 35).Text) Then
'Datum auf Jahreszahl-Bereich prüfen
If Year(Me.Cells(Target.Row, 35)) >= 2016 _
And Year(Me.Cells(Target.Row, 35)) 

Anzeige
AW: Excel-Zeile kopieren und in Tabelle 2/3 eintragen
03.11.2016 11:50:35
Grigoryev
Hallo Franz,
Besten Dank.
Es funktioniert super! )))
Ich habe noch eine Frage.
ich wollte ncoh dazu diesen Befehl verwenden, wenn die Zelle kopiert wurde:
Sheets("Aufträge").Rows(Target.Row).EntireRow.Hidden = True
ist dieses Befehl richtig?
Bei Blattschutz, kommt eine Fehlermeldung.
Kann man diese umgehen?
Vielen Dank
Gruß
Yury
AW: Excel-Zeile kopieren und in Tabelle 2/3 eintragen
03.11.2016 23:45:20
fcs
Hallo Yuri,
den Blattschutzmuss du dann vorübergend aufheben.
Falls du besondere Schutzeinstellungen für das Blatt gemacht hast, dann muss das Einschalten des Blattschutzes mit dem Makrorecorder aufzeichnne und in das Makro übertragen.
Gruß
Franz
                'wenn alles passt dann Zeile kopieren
With Me.Rows(Target.Row)
.Copy Destination:=wksArchiv.Rows(myLastRow + 1)
Me.Unprotect Password:=""
.EntireRow.Hidden = True
Me.Protect Pasword:="", DrawingObjects:=True, Contents:=True, _
Scenarios:=True
End With

Anzeige
AW: Excel-Zeile kopieren und in Tabelle 2/3 eintragen
07.11.2016 14:12:19
Yury
Hallo Franz,
es funktioniert.
Super.
Vielen Dank.
Gruß
Yury
AW: Excel-Zeile kopieren und in Tabelle 2/3 eintragen
01.11.2016 17:12:13
KlausF
Und ich hab' auch noch einen:
Private Sub Worksheet_Change(ByVal Target As Range)
' begrenzt die Reaktion auf Aktionen nur in Spalte 35 = Spalte AI
If Target.Column  35 Then Exit Sub
' begrenzt die Reaktion auf Aktionen nur ab Zeile 5
If Target.Row  1 Then Exit Sub
' letzte Zeile in Archiv
Dim myLastRow As Long
' ermitteln der Jahreszahl
Dim myYear As String
myYear = Year(Cells(Target.Row, Target.Column))
' Copy-Archiv ermitteln
Dim Archiv As String
Archiv = "Archiv_" & myYear
' Gibt es das Archiv überhaupt?
If SheetExist(Archiv) = False Then
MsgBox "Jahr " & myYear & " nicht als Archiv vorhanden": Exit Sub
End If
Application.ScreenUpdating = False
With Worksheets(Archiv)
' sucht die letzte gefüllte Zelle in Spalte A
myLastRow = .Cells(Rows.Count, 1).End(xlUp).Row
' damit beginnt das Füllen erst ab Zeile 5
If myLastRow  Date Then
Worksheets("Aufträge").Rows(Target.Row).Copy _
Destination:=Worksheets(Archiv).Rows(myLastRow + 1)
MsgBox "Abgeschlossener B-Auftrag ins Archivblatt " & myYear & " verschoben"
End If
Application.ScreenUpdating = True
End Sub
Private Function SheetExist(ByVal sheetName As String, Optional Wb As Workbook) As Boolean
Dim wks As Worksheet
On Error GoTo ERRORHANDLER
If Wb Is Nothing Then Set Wb = ThisWorkbook
For Each wks In Wb.Worksheets
If LCase(wks.Name) = LCase(sheetName) Then SheetExist = True: Exit Function
Next
ERRORHANDLER:
SheetExist = False
End Function
Gruß
Klaus
Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige