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

Kopieren von Spalten per VBA

Kopieren von Spalten per VBA
06.06.2016 15:14:44
Spalten
Hallo zusammen,
nachdem dieses tolle Forum mir schon eingige Male sehr geholfen hat, wende ich mich wieder vertrauensvoll an euch :)
Ich möchte per VBA Spalten aus einem Tabellenblatt in ein anderes kopieren. Dabei sollen nur Spalten kopiert werden, die in einer bestimmten Zeile einen Inhalt haben. Wenn die Spalte in dieser Zeile leer ist, soll sie nicht kopiert werden. Dies bekomme ich soweit auch schon ganz gut hin (siehe https://www.herber.de/bbs/user/106026.xlsm).
Das einzige was noch nicht ganz passt, ist, dass momentan die Spalten komplett (also inklusive Formeln, die in Tabelle1 stehen) kopiert werden. Ich möchte allerdings in Tabellenblatt2 nur die Werte haben. Alle meine dilletantischen Versuche mit PasteSpecial xlPasteValues sind leider gescheitert. Kann mir jemand anhand der Beispieldatei auf die Sprünge helfen?
Vielen Dank vorab und beste Grüße
Uli

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopieren von Spalten per VBA
06.06.2016 16:23:46
Spalten
Hallo!
Du willst im Grunde Dein Blatt 1 ohne die optischen Aufbereitungen (Leerspalten, -zeilen) in Blatt 2 kopieren, nur mit Werten.
Evtl. ist's einfacher, Du wirfst alles aus Blatt 1 ins Blatt 2 (nur mit Werten) und löschst dann erst in Blatt 2 die nicht benötigten Spalten und Zeilen. Sehr grob etwa so:
Sub a()
Dim Wb As Workbook
Dim WsQ As Worksheet
Dim WsZ As Worksheet
Dim Spalten As Range
Dim Z As Range
Set Wb = ThisWorkbook
Set WsQ = Wb.Worksheets("Tabelle1")
Set WsZ = Wb.Worksheets("Tabelle3") 'testweise mit Blatt 3 als Ziel, ggf. anpassen
'Zielblatt komplett leeren
WsZ.Cells.ClearContents
With WsQ
'Verwendeten Bereich im Quellblatt komplett kopieren
.UsedRange.Copy
'nur Werte ins Zielblatt einfügen
WsZ.Range("A1").PasteSpecial xlPasteValues
End With
With WsZ
'im Zielblatt erste 4 Zeilen löschen
.Rows("1:4").EntireRow.Delete
'Danach alle Spalten mit Leerzellen in Zeile 1 löschen
Set Spalten = .Range("A1:" & .Cells(1, .Columns.Count).End(xlToLeft).Address)
For Each Z In Spalten
If Z.Value = vbNullString Then Z.EntireColumn.Delete
Next Z
'im Zielblatt zweite Zeile löschen
.Rows(2).Delete
End With
End Sub
Lg
Michael

Anzeige
AW: Kopieren von Spalten per VBA
07.06.2016 00:01:48
Spalten
Hallo Uli!
Ist mein erster Beitrag den ich in diesem Forum leiste :D
Willst du die leeren Zeilen "mitkopieren" oder nicht?
habe folgendes ausprobiert und bei mir hat es funktioniert...
Ich habe bei diesem Beispiel die leeren Zellen nicht "mitkopiert" sonder habe einfach die Zeilen
untereinander eingefügt.
Möchtest du die leeren Zellen mitkopieren, dann einfach das Fett und Kursive markierte weglassen!
Würde mich auf eine Antwort freuen :D

Sub Zellen_Kopieren()
Dim Zeile As Integer
Dim Spalte As Integer
'Zeilen von unten nach oben durchlaufen, kopieren und einfügen
Application.ScreenUpdating = False 'Bildschirmaktualisierung ausschalten
ls = Worksheets(2).Cells(1, Columns.Count).End(xlToLeft).Column 'Bestimmt die letzte Spalte von  _
Tabelle 2 wo etwas drinnen steht
Spalte = 2 'Der Spaltenwert ab wo eingefügt werden soll
For s = 1 To ls 'Schleife zum durchlaufen der Spalten
lz = Worksheets(2).Cells(Rows.Count, s).End(xlUp).Row 'Die letzte Zeile der aktuellen  _
Spalte bestimmen
Zeile = 7 'Zeilenwert (ab wo eingefügt werden soll) der immer wieder auf 7 zurückgesetzt  _
wird, damit er wieder ab diesen Zeilenwert einfügt
For i = 2 To lz 'Schleife um die Zeilen der aktuellen Spalte zu durchlaufen
If Worksheets(2).Cells(i, s)  "" Then 'Prüfen ob etwas drinnen steht
Worksheets(2).Cells(i, s).Copy 'wenn etwas drinnen steht, dann diesen Wert kopieren
Worksheets(1).Cells(Zeile, Spalte).PasteSpecial xlPasteValues 'Wert einfügen
Zeile = Zeile + 1 'Immer eine Zeile weiterwandern zwecks einfügen
End If
Next i
Spalte = Spalte + 2 'Immer 2 Spalten weiterwandern zwecks einfügen
Next s
Application.ScreenUpdating = True 'Bildschirmaktualisierung einschalten
End Sub

Anzeige
AW: Kopieren von Spalten per VBA
07.06.2016 09:00:47
Spalten
Hallo ihr beiden,
vielen Dank für Eure Mühe! Michaels Code funktioniert spitzenmäßig! Ich hatte dies auch gestern schon als Antwort gepostet, aber irgendwie ist der Post nicht mehr sichtbar?! Vielen Dank Michael!
Alen, wenn ich deinen Code einfüge, passiert leider gar nichts. Auch keine Fehlermeldung :) Da ich deinen Code mit meinen begrenzten Kenntnissen auch nicht wirklich nachvollziehen kann, weiß ich somit auch nicht wirklich, woran es liegt. Funktioniert er bei dir? Trotzdem vielen Dank für deine Antwort! :)
Viele Grüße
Uli

Gern! owT
07.06.2016 09:58:25
Michael

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige