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

VBA Code Zusammenführen

VBA Code Zusammenführen
03.02.2021 09:51:59
Jonas
Hallo Zusammen
Ich bin erst seit einer Woche mit VBA Codes unterwegs und habe untenstehende Funktion geschrieben. Der Code funktioniert, aber ich habe noch zwei Probleme:
1. Ich möchte nur die Werte und die Formatierung der Zellen kopieren, nicht aber die Formeln. Egal wie ich es versucht habe, ob mit .value oder mit .PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Es hat nie funktioniert. Ich vermute, dass ich die Auswahl vor dem .Copy beim .PasteSpecial nicht richtig definiert habe.
2. Es sollten nur die Spalten B-E kopiert werden. Um diese zu beheben, habe ich den zweiten Sub geschrieben, aber könnte man diesen in den 1. integrieren? Kann mir da Jemand helfen? Besten Dank! P.S. Ich habe die Datei nicht angehängt, da es 32 Arbeitsblätter sind und ich diesen VBA dann _ auf die andern auch anwenden möchte. Die Zeit sich einem Überblick in diesem File zu machen möchte ich euch sparen. Wenn es allerdings anders nicht geht, kann ich die Datei noch liefern.

Sub KopieErstellen()
Dim lngZeile As Long
Dim lngErste As Long
With Worksheets("ATPL (H) IR int. 010 Air Law")
For lngZeile = 2 To 712
If Worksheets("010 Air Law").Cells(lngZeile, 4) = "x" Then
lngErste = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp). _
Row, .Rows.Count) + 1
Worksheets("010 Air Law").Rows(lngZeile).Copy .Cells(lngErste, 1)
End If
If Worksheets("010 Air Law").Cells(lngZeile, 2).Font.Bold = True Then
lngErste = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row,  _
.Rows.Count) + 1
Worksheets("010 Air Law").Rows(lngZeile).Copy .Cells(lngErste, 1)
End If
Next lngZeile
End With
End Sub

Sub Clear()
ActiveSheet.Range(Columns(6), Columns(Columns.Count)).Delete
End Sub

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Code Zusammenführen
03.02.2021 09:59:29
hary
Moin
Egal wie ich es versucht habe...
Hast du PasteSpecial auch in eine eigene Codezeile gepackt?
Worksheets("010 Air Law").Rows(lngZeile).Copy
.Cells(lngErste, 1).PasteSpecial(...

gruss hary
AW: VBA Code Zusammenführen
03.02.2021 15:05:00
Jonas
Hi Hary,
ich dachte erst: Ja das habe ich probiert, da ich gelesen habe, dass es nach dem Copy eine neue Zeile braucht. Aber jetzt funktioniert es, vermutlich weil ich vorher nicht nur .Cells, sondern immer den genauen Ort nochmals definieren wollt. Auf jeden Fall klappts, aber die Lösung von ralf ist noch etwas schöner.
Besten Dank!
Anzeige
AW: VBA Code Zusammenführen
03.02.2021 10:09:16
Piet
Hallo Jonas
verwende PasteSpecial zweimal nacheinander, dan klappt es. xlPastAll kopiert alles, aber auch die Rahmen und Zeiien Innenfarben mit. Ein anderer Code kopiert dir alle Formate, aber mit Formeln!. Setze dahinter für denselben Bereich den zweiten Befehl mit xlPasteValues, dann kapiert Excel in die formatierten Zellen nur noch die Werte. Formeln sind dann verschwunden!!
mfg Piet
AW: VBA Code Zusammenführen
03.02.2021 10:13:22
ralf_b
Moin,
hier mal etwas aufgeräumt
Sub KopieErstellen()
Dim lngZeile As Long
Dim lngErste As Long
Dim sht As Worksheet
Set sht = Worksheets(1) '"010 Air Law")
With Worksheets(2) '"ATPL (H) IR int. 010 Air Law")
lngErste = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, . _
Rows.Count) + 1
For lngZeile = 2 To 712
If sht.Cells(lngZeile, 4) = "x" Or sht.Cells(lngZeile, 2).Font.Bold = True Then
sht.Range("B" & lngZeile & ":E" & lngZeile).Copy
'oder
'sht.Range("B" & lngZeile).Resize(, 4).Copy
.Cells(lngErste, 1).PasteSpecial Paste:=xlPasteValues
.Cells(lngErste, 1).PasteSpecial Paste:=xlPasteFormats
End If
Next lngZeile
End With
End Sub

Anzeige
update u. sorry piet
03.02.2021 10:16:20
ralf_b
@TE die Worksheetzuweisung solltest du wieder zurücksetzen. Habe ich vergessen im Beispiel.
gruß
rb
AW: VBA Code Zusammenführen
03.02.2021 14:48:28
Jonas
Hallo Ralf
Besten Dank für die Antwort! Die Auswahl der spalten funktioniert einwandfrei. Nun habe ich noch das Problem, dass sich alle Zeilen neu Überschreiben. Ich habe als dann keine Tabelle mit allen Zeilen welche die Bedingung erfüllen, stattdessen nur die letzte Zeile. An was könnte das liegen?
Das ist der verwendete code:
Sub KopieErstellenundlöschen()
Dim lngZeile As Long
Dim lngErste As Long
Dim sht As Worksheet
Set sht = Worksheets("010 Air Law")
With Worksheets("ATPL (H) IR int. 010 Air Law")
lngErste = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, . _
Rows.Count) + 1
For lngZeile = 2 To 712
If sht.Cells(lngZeile, 4) = "x" Or sht.Cells(lngZeile, 2).Font.Bold = True Then
sht.Range("B" & lngZeile).Resize(, 4).Copy
.Cells(lngErste, 1).PasteSpecial Paste:=xlPasteValues
.Cells(lngErste, 1).PasteSpecial Paste:=xlPasteFormats
End If
Next lngZeile
End With
End Sub

Anzeige
AW: VBA Code Zusammenführen
03.02.2021 14:50:59
ralf_b
schreibe unter die paste anweisungen lngErste = lngErste +1
AW: VBA Code Zusammenführen
03.02.2021 14:59:59
Jonas
Besten Dank! Dafür sind meine Kenntnisse definitiv noch zu gering, jetzt funktioniert es perfekt:)
danke für die rückmeldung -owT
03.02.2021 15:19:16
ralf_b
AW: VBA Code Zusammenführen
03.02.2021 15:02:35
Jonas
Hallo Piet
Besten Dank für die Hilfe. Es hat offenbar nicht geklappt, da ich nach dem Copy das .Cells stehen gelassen habe. Wenn ich das auch noch auf die nächste Seite nehme, klappts mit deinem Tipp

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige