Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1684to1688
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

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige