Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeieln übertragen mittels VBA

Forumthread: Zeieln übertragen mittels VBA

Zeieln übertragen mittels VBA
05.04.2019 16:10:57
Stefan
Hallo zusammen,
ich möchte wie untenstehend diverse Zeilen aus einem Protokoll übertragen, wenn die Spalte G auf erledigt gesetzt ist. Allerdings steht in Spalte H nach Datum sortiert viel Text.
Das nachfolgende Makro funktioniert soweit, allerdings überträgt das Makro die Textzeilen aus Spalte H nicht korrekt.
Kann mir da jemand weiterhelfen?

Sub ZeilenUebetragen_MG()
Dim i As Long, tLR As Long
Dim tarWks As Worksheet, srcWks As Worksheet
Set srcWks = Worksheets("Protokoll")
Set tarWks = Worksheets("Protokoll erledigt")
With srcWks
For i = 1 To .Cells(.Rows.Count, 7).End(xlUp).Row
If .Cells(i, 7).Value = "erledigt" Then
tLR = tarWks.Cells(Rows.Count, 7).End(xlUp).Row + 1
Debug.Print tLR
With tarWks
.Range(.Cells(tLR, 1), .Cells(tLR, 8)).Value = srcWks.Range(srcWks.Cells(i, 1),  _
_
_
srcWks.Cells(i, 7)).Value
End With
End If
Next i
End With
For zelle = 60000 To 2 Step -1
If Cells(zelle, 7).Value = "erledigt" Then
Rows(zelle).Delete
End If
Next
End Sub

https://www.herber.de/bbs/user/128950.xlsm
Gruß Stefan
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeieln übertragen mittels VBA
05.04.2019 16:35:35
Werner
Hallo Stefan,
du schreibst ja auch in Spalte H die Formeln in die Zielmappe, die dort dann aber ihren Bezug verlieren.
Als erstes kopier dier von Hand mal die Überschriftenzeile ins Zielblatt, die bleibt ja immer gleich.
Dann das Makro:
Sub ZeilenUebetragen_MG()
Dim i As Long, tLR As Long
Dim tarWks As Worksheet, srcWks As Worksheet
Set srcWks = Worksheets("Protokoll")
Set tarWks = Worksheets("Protokoll erledigt")
Application.ScreenUpdating = False
With srcWks
For i = 6 To .Cells(.Rows.Count, 7).End(xlUp).Row
If .Cells(i, 7).Value = "erledigt" Then
With tarWks
tLR = .Cells(Rows.Count, 7).End(xlUp).Row + 1
srcWks.Range(srcWks.Cells(i, 1), srcWks.Cells(i, 8)).Copy
.Cells(tLR, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End With
End If
Next i
End With
Application.CutCopyMode = False
For zelle = 60000 To 2 Step -1
If Cells(zelle, 7).Value = "erledigt" Then
Rows(zelle).Delete
End If
Next
End Sub
Gruß Werner
Anzeige
AW: Zeieln übertragen mittels VBA
05.04.2019 16:38:20
ChrisL
Hi Stefan
Der Fehler liegt hier...
Range(Cells(x, 1), Cells(x, 8)).Value = Range(Cells(y, 1), Cells(y, 8)).Value
Zahl 7 auf 8 korrigieren
Der Code sollte nach meiner Logik in ein Standardmodul (Menü Einfügen, Modul) und nicht ins Modul von DieseArbeitsmappe.
Sub ZeilenUebetragen_MG()
Dim i As Long, tLR As Long, lZ As Long
Dim tarWks As Worksheet, srcWks As Worksheet
Set srcWks = Worksheets("Protokoll")
Set tarWks = Worksheets("Protokoll erledigt")
With srcWks
lZ = .Cells(.Rows.Count, 7).End(xlUp).Row
For i = 1 To lZ
If .Cells(i, 7).Value = "erledigt" Then
tLR = tarWks.Cells(Rows.Count, 7).End(xlUp).Row + 1
tarWks.Range(tarWks.Cells(tLR, 1), tarWks.Cells(tLR, 8)).Value = _
.Range(srcWks.Cells(i, 1), .Cells(i, 8)).Value
End If
Next i
For i = lZ To 2 Step -1
If .Cells(i, 7).Value = "erledigt" Then .Rows(i).Delete
Next i
End With
End Sub
cu
Chris
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige