Anzeige
Archiv - Navigation
1852to1856
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

Bis zu einem bestimmten Bereich kopiere

Bis zu einem bestimmten Bereich kopiere
19.10.2021 13:46:07
Daniela
Hallo zusammen,
Ich bin an einer ToDo Lösung.
Wenn ich den Script benutze um die erledigten Datensätze in das Archiv zu verschieben, wird immer eine ganze Zeile kopiert.
Was muss ich ändern, wenn ich nur bis zur Spalte H ins Archiv kopieren will (also von A bis H)?
Ich könnte eure Hilfe brauchen.

Sub MoveToArchiv()
Dim i As Long
Dim lRows As Long
Dim vntResult As Variant
Dim wksToDo As Worksheet
Dim wksArchiv As Worksheet
Set wksToDo = ActiveWorkbook.Worksheets("ToDo")
Set wksArchiv = ActiveWorkbook.Worksheets("Archiv")
lRows = wksToDo.UsedRange.SpecialCells(xlCellTypeLastCell).Row
For i = lRows To 2 Step -1
Set vntResult = wksToDo.Range(wksToDo.Cells(i, 8), wksToDo.Cells(i, 8)).Find( _
What:="erledigt", LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:=True)
If Not vntResult Is Nothing Then
wksToDo.Rows(i).Copy
wksArchiv.Rows(2).Insert Shift:=xlDown
wksToDo.Rows(i).Delete Shift:=xlUp
End If
Set vntResult = Nothing
Next i
Application.CutCopyMode = False
Set wksToDo = Nothing
Set wksArchiv = Nothing
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Bis zu einem bestimmten Bereich kopiere
19.10.2021 13:52:05
Klaus
statt
wksToDo.Rows(i).Copy
nimmst du

wksToDo.Range(cells(i,1),cells(i,8)).copy
LG,
Klaus M.
AW: Bis zu einem bestimmten Bereich kopiere
19.10.2021 14:46:18
Daniela
Hallo Klaus
Vielen Dank für deine Mühe, aber das funktioniert so nicht richtig.
In der Spalte H hat es in mehreren Zeilen das Wort "erledigt". Nach diesem Wort wird ja gesucht.
Mit deiner Änderung wird im Archiv die Kopierten Zeilen bis ans Tabellenblattende wiederholter weise kopiert. Eigentlich müsste die Daten im Archiv untereinander Zeilenweise wieder einkopiert werden.
AW: Bis zu einem bestimmten Bereich kopiere
20.10.2021 08:57:18
Daniela
Guten Tag zusammen!
Ich habe nach längerem ausprobieren den zu kopierenden Bereich wie ursprünglich so belassen (also ganze Zeile kopieren).
Mein nächster Schritt ist es nun die Daten aus der geschützten Tabelle ins Archiv (das auch geschützt ist) zu kopieren.
Auf der aktuellen ToDo Seite wird die Tabelle auch richtig entsperrt und wieder (nach Ablauf des Scripts) gesperrt, sofern die Archiv-Seite noch nicht gesperrt ist (also kein Kennwort gesetzt ist).
Sobald ich die Archivseite schütze (analog der ToDo Seite), wird eine Fehlermeldung bei
wksArchiv.Rows (2).Insert Shift:=clDown
Angezeigt (Fehlermeldung: Die Insert-Methode des Range-Objektes konnte nicht ausgeführt werden.)
Das würde für mich bedeuten, dass ich das
ActiveSheet.Unprotect Password:=""
noch nicht richtig gesetzt habe. Ist das richtig? An welchen Ort müsste ich denn den Befehl hinterlegen, oder gar eine andere Variante?

Sub MoveToArchiv()
ActiveSheet.Unprotect Password:=""
Dim i As Long
Dim lRows As Long
Dim vntResult As Variant
Dim wksToDo As Worksheet
Dim wksArchiv As Worksheet
Set wksToDo = ActiveWorkbook.Worksheets("ToDo")
Set wksArchiv = ActiveWorkbook.Worksheets("Archiv")
lRows = wksToDo.UsedRange.SpecialCells(xlCellTypeLastCell).Row
For i = lRows To 2 Step -1
Set vntResult = wksToDo.Range(wksToDo.Cells(i, 8), wksToDo.Cells(i, 8)).Find( _
What:="erledigt", LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:=True)
If Not vntResult Is Nothing Then
wksToDo.Rows(i).Copy
wksArchiv.Rows(2).Insert Shift:=xlDown
wksToDo.Rows(i).Delete Shift:=xlUp
End If
Set vntResult = Nothing
Next i
Application.CutCopyMode = False
Set wksToDo = Nothing
Set wksArchiv = Nothing
ActiveSheet.Protect Password:=""
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige