MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 16.10.2018, 19:32   #1
aysxdcfv
MOF User
MOF User
Standard VBA - Kopieren mir FOR?

Halle IT-Gemeinde,

kann man folgende Problemstellung einfach lösen? Ich möchte Werte von Tabellenblatt 1 ins Tabellenblatt 2 kopieren. Die Anfangs- und End Zeilen sind identisch, die Spalten jedoch nicht. Beim zweiten Kopiervorgang wird die Spalte10 zu 11 und gleichzeitig die Spalte 20 zu 21 usw. Ich könnte natürlich die Differenz der Spalten fixieren (Spalte20+5), aber die Spaltenänderung in einem Zeitraum wird bei Spalte 10 gleich bleiben, bei Spalte 20 jedoch nicht. Um mir diesen Code für jede einzelne Spalte zu ersparen, würde ich das gerne alles zusammen packen. Ich habe ca. 20 solcher Kopiervorgänge.
Beispielhaft der Code:

Set ws1 = ThisWorkbook.Worksheets(1)
Set ws2 = ThisWorkbook.Worksheets(2)

Set FO1 = ws1.Range(ws1.Cells(5, Spalte10), ws1.Cells(10, Spalte10))
FO1.Copy
ws2.Range(ws2.Cells(5, Spalte20), ws2.Cells(10, Spalte20)).PasteSpecial

Geändert von aysxdcfv (16.10.2018 um 19:35 Uhr).
aysxdcfv ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.10.2018, 20:03   #2
MisterBurns
MOF Koryphäe
MOF Koryphäe
Standard

Und jetzt bitte nochmal so, dass ich es auch verstehe. Deiner Beschreibung kann ich nicht folgen.
Aber als Denkansatz mal: Du musst beim Paste-Vorgang keine Range angeben, die oberste Zelle reicht.

__________________

Schöne Grüße
Berni
MisterBurns ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.10.2018, 21:44   #3
aysxdcfv
Threadstarter Threadstarter
MOF User
MOF User
Standard

OK, korrigiert, aber noch nicht getestet. Danke für den Tipp.

Man kann sich das so vorstellen:
Tabellenblatt 1: In Spalte B von Zeile 1 bis 100 stehen Werte, ebenso in Spalte C, D etc.. die weiteren 20 Spalten.

Diese Werte sollen jetzt kopiert werden ins Tabellenblatt 2, angefangen bei Spalte bspw. G und ebenso in den nächsten 20 Spalten.

Um das zu programmieren, müsste ich also 20 Kopiervorgänge mit PasteSpecial schreiben. Das möchte ich verhinden. Die Idee war ein Array, aber das haut nicht hin...

Set FO1 = ws1.Cells(5, Spalte10), ws1.Cells(10, Spalte10)
FO1.Copy
ws2.Cells(5, Spalte20), ws2.Cells(10, Spalte20).PasteSpecial
aysxdcfv ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 17.10.2018, 08:25   #4
MisterBurns
MOF Koryphäe
MOF Koryphäe
Standard

Also verstehe ich es richtig, dass der Bereich Tabelle1!B1:U100 (das sind 20 Spalten wenn ich mich nicht verzählt habe) kopiert und in Tabelle2!G1:Z100 eingefügt werden soll?

Falls ja:
Code:

ws1.Range("B1:U100").Copy Destination:=ws2.Range("G1")
oder
Code:

ws1.Range("B1:U100").Copy
ws2.Range("G1").PasteSpecial xlPasteValues    'bzw. xlPasteFormats wenn gewünscht

__________________

Schöne Grüße
Berni
MisterBurns ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 17.10.2018, 18:44   #5
aysxdcfv
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo Mister Burns,

in die Richtig geht es.
Jedoch habe ich die Herausforderung, dass die Spalten im Tabellenblatt 1 (Kopieren) und Tabellenblatt 2 (Einfügen) nicht in der gleichen Reihenfolge stehen. Somit kann ich den Bereich nicht in einem kopieren.

Beispiel:
Tabellenblatt 1: In Spalte B von Zeile 1 bis 100 stehen Werte, dito Spalte C, D etc. (20 Spalten)

Tabellenblatt 2: Spalte C aus Tabellenblatt 1 wird in Spalte G eingefügt, Spalte D aus Tabellenblatt 1 wird in Spalte P eingefügt usw.

Hinweis: Falls es helfen sollte, jede Spalte ist eine separate Variable
aysxdcfv ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 17.10.2018, 22:40   #6
aloys78
MOF Meister
MOF Meister
Standard

Hallo,

Zitat:

Tabellenblatt 2: Spalte C aus Tabellenblatt 1 wird in Spalte G eingefügt, Spalte D aus Tabellenblatt 1 wird in Spalte P eingefügt usw.

Und wie geht es weiter ?
Entweder steht ein Sytem dahinter, zB immer x Zwischenspalten, oder Du zählst die Zielspalten alle einzeln auf.

Gruß
Aloys
aloys78 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 18.10.2018, 08:19   #7
BoskoBiati
MOF Koryphäe
MOF Koryphäe
Standard

Hi,

wenn Du die Spalten in einer anderen Reihenfolge einfügen willst, als sie in der Ursprungstabelle angeordnet sind, dann solltest Du die Spaltenreihenfolge entsprechend in einem Array anordnen und dann einfügen. Ich würde aber die Reihenfolge im Ziel als Basis nehmen.

Als Ansatz, Code in der Zieltabelle (Tabelle3):

Code:

Sub test()
Dim VarSpalten
Dim loA
VarSpalten = Array("D", "K", "H", "I", "L", "G", "F", "J", "M", "E")
For loA = 7 To 16
Sheets("Tabelle2").Columns(VarSpalten(loA - 7)).Copy Destination:=Columns(loA)
Next
End Sub
Quelltabelle ist die Tabelle2

__________________

Gruß

Edgar
Ich weiß, daß ich nichts weiß!
BoskoBiati ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:53 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.