Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zellenbereiche hintereinander kopieren

Zellenbereiche hintereinander kopieren
Camba
Hallo, ich möchte gerne ein bisschen VBA lernen,
ich habe folgendes Problem wo ich leider nicht mehr weiter komme
Ich möchte unterschiedliche Zellenbereiche von einer ausgefüllten tabelle (Templatesheet)) ins (Zielsheet) kopieren
hier ist mein bisheriges programm:
Option Explicit
Sub generate()
Dim wksQ As Worksheet
Dim wksZ As Worksheet
Dim wksT As Worksheet
Dim i As Long
Dim j As Long
Dim Temp As Variant
Set wksQ = ThisWorkbook.Worksheets("Quelle")
Set wksZ = ThisWorkbook.Worksheets("Ziel")
Set wksT = ThisWorkbook.Worksheets("template")
With wksQ
For i = 11 To 15      'nach unten 65536
For j = 1 To 10    'Rechts 11
Select Case Cells(i, j)
Case "Apfel"
Temp = wksQ.Cells(i, 4).Value  ' hier hole ich noch einen anderen  _
Zelleninhalt welches
wksT.Cells(4, 4).Value = Temp  ' den Tabelleninhalt des Template  _
Sheets aktualisiert
' jetzt kommt der kopiervorgang von template worksheet nach ziel  _
worksheet
Sheets("template").Select
Range("A1:I35").Select
Selection.Copy
Sheets("Ziel").Select
Range("A1:I35").Select
ActiveSheet.Paste
'nur möchte ich beim nächsten Schleifenduchlauf einen anderen Bereich   _
_
auswählen
'von ("A4:I35") und dieser Bereich soll für die restlichen  _
schleifendurchläufe auch so bleiben
' nur beim aller ersten Schleifen durchlauf soll  ("A1: I35") ausgewä _
hlt werden
' und ausserdem möchte ich bei Jedem kopiervorgang ins Quellziel die  _
bereiche
' hinten dran hängen
' z.b:  1. durchlauf A1:I35 (template) nach A1:I35 (ziel)
'         2. durchlauf A4:I35 (template) nach A36:I67(ziel)
' usw
Case "Birne"
' wenn nun Birne ausgewählt wird wird das gleiche wie bei Apfel gemacht
' nur nur ein anderer Bereich ausgewählt
z.b: 1. durchlauf A38:A57 (template) nach ende des Bereichs vom Ziel  _
sheet
' bei 2 durchläufen wäre ja das ende A36:I67(ziel) bei x durchlä _
_
ufen ?
' ist es dynamisch machbar?
2. durchlauf A41:A57 (template) wieder im Ziel sheet hinten dran  _
_
hängen
Case "Orange"
das gleiche wie bei apfel und birne nur ein anderer Bereich
End Select
Next j
Next i
End With
End Sub

ich hoffe ich konnte mein Problem einigermaßen darstellen, ich würde mich über die Antworten sehr freuen
vielen dank schonmal im voraus
AW: Zellenbereiche hintereinander kopieren
07.11.2009 09:11:23
fcs
Hallo Camba,
um den Code bei Änderungen/Ergänzungen von Suchbegriffen und Zellbereichen im Template nicht ändern zu müssen solltest du diese Informationen in einem separaten Tabellenblatt verwalten, das du ggf. ausblendest.
Das Makro kann diese Informationen auslesen und den Kopiervorgang entsprechend steuern.
Ich hab in der Beispieldatei mal deine Basiswünsche umgesetzt.

Die Datei https://www.herber.de/bbs/user/65647.xls wurde aus Datenschutzgründen gelöscht


Gruß
Franz
AW: Zellenbereiche hintereinander kopieren
09.11.2009 09:06:32
Camba
hallo, es funktioniert :)
ist zwar ein wenig kompliziert für mich, aber ich werd mal versuchen das im laufe des tages zu verstehen :)
vielen dank für deine Mühe und Aufwand,
Anzeige
AW: Zellenbereiche hintereinander kopieren
09.11.2009 12:04:31
Camba
hab da noch eine kleine frage zu,
im template sheet gibt es ja verschiedene Bereiche, Apfel, Birne, Orange
wenn im Quellsheet zum beispiel Orange 3 mal vorkommt, wird ja der Bereich im template 3 mal hintereinander ins Zielsheet kopiert, ist es denn möglich, dass die Spalte E sich, (welches mit einem bestimmten Startwert anfängt z.B 18, beim zweiten durchlauf 18+50 = 68, beim dritten durchlauf
68+50= 118 usw...) dementsprechen verändert ?
näheres dazu hab ich nochmal in der Datei beschrieben welches ich hinten dran hänge,
(die Blauen Sheets )

Die Datei https://www.herber.de/bbs/user/65685.xls wurde aus Datenschutzgründen gelöscht


Anzeige
AW: Zellenbereiche hintereinander kopieren
09.11.2009 16:53:11
fcs
Hallo Camba,
der Werte-Offset in Spalte E für die verschiedenen Suchbegriffe wird ebenfalls im Blatt CodeVorgaben eingegeben.
Ich hab die Prozedur entsprechend angepasst.

Die Datei https://www.herber.de/bbs/user/65690.xls wurde aus Datenschutzgründen gelöscht


Gruß
Franz
AW: Zellenbereiche hintereinander kopieren
10.11.2009 15:11:45
Camba
Hallo Franz,
vielen vielen dank
das ist ja unglaublich, wie du das mit kleinen Veränderungen hinkriegst,
ich hoffe ich kann das irgendwann auch so gut, unfassbar, das man wirklich so vieles mit vba umsetzen kann.
ich wollte gerne noch ein wenig experimentieren mit "Code vorgaben", leider krieg ich fehlermeldungen
wie kann ich denn im template die spalte C verändern? also bei jedem durchlauf soll da wieder was anderes stehen,
ich hänge mal wieder die datei mit, ein bild sagt mehr als tausend worte
es geht wieder um die beiden blau gefärbten sheets
https://www.herber.de/bbs/user/65736.xls
ach noch was, könnte man den die laufzeit verbessern? bei ner langen liste dauert es ne halbe minute bis das zielsheet erstellt wird
Anzeige
AW: Zellenbereiche hintereinander kopieren
10.11.2009 18:29:32
fcs
Hallo Camba,
ich hab das Blatt Codevorgaben und die Prozedur entsprechend ergänzt, so dass Spalte C ebenfalls mit Vorgabewerten asgefüllt wird.
https://www.herber.de/bbs/user/65740.xls
Die Laufzeit von ca. 30 Sekunden kann ich nicht nachvollziehen, es sei denn dein Rechner ist schon etwas betagt oder du hast noch irgendwelche komplizierten Berechnungen im Template eingebaut.
Bei mir (Pentium 4, 3 GHz, 504 MB Arbeitsspeicher, Windows XP, Office 2003) dauert das Einfügen von 50 Einträgen (bis ca. Zeile 900 im Zielblatt) keine 2 Sekunden.
Gruß
Franz
Anzeige
AW: Zellenbereiche hintereinander kopieren
11.11.2009 10:18:20
Camba
ich habe einen Laptop Centrino 2 Ghz, 2GB Ram
im Sheet (Quelle) hab ich ca 9 Zeilen + ein paar Leerzeilen
( es werden aber mehr (vielleich 100 ) variabel
im Sheet (Template) hab ich ca 2000 Zeilen, die brauche ich aber auch
im Sheet(CodeVorgaben) hab ich ca 30 Zeilen
Mit For i = 11 To 65536
For j = 1 To 10
dauert das generieren ca 2 min
dann hab ich diese lösung angewendet
For i = 1 To ActiveSheet.UsedRange.Rows.Count - 1
For j = 1 To ActiveSheet.UsedRange.Columns.Count - 1
damit dauert es ca 30 - 40 Sek
Ich habe hier noch folgende Datei:

Die Datei https://www.herber.de/bbs/user/65763.xls wurde aus Datenschutzgründen gelöscht


wäre das möglich dieses auch auf meine Liste anzuwenden?
je nachdem wieviele Quellen in einem fixen Sheet eingetragen werden, erstellt mir das makro genau soviele Sheets, nur diese Sheets dürfen nicht leer sein sondern müssen eine vorgefertigte tabelle enthalten die könnte auch einmalig in einem sheet abgelegt sein irgendwo und dann für quelle1,2 usw herauskopiert werden, Zielsheet wird dann sein quelle_obst
das makro generieren wird ja gleich bleiben nur Zielsheet wird je nach einträgen unterschiedlich aussehen
im VBA Code sind ja feste vorgaben,
Set wksC = ThisWorkbook.Worksheets("CodeVorgaben")
Set wksQ = ThisWorkbook.Worksheets("Quelle")
Set wksZ = ThisWorkbook.Worksheets("Ziel")
Set wksT = ThisWorkbook.Worksheets("template")
usw
kann man das auch irgendwie mit pointern machen?
Anzeige
AW: Zellenbereiche hintereinander kopieren
11.11.2009 15:37:43
fcs
Hallo Camba,
das Erstellen von Tabellenblättern auf Basis eines Musterblattes ist kein Problem. Du erstellst hierfür eine oder auch mehrere Vorlagedateien (*.XLT oder XLTX) mit einem Tabellenblatt und formatierst und ergänzt Daten in diesem Tabellenblatt. Die Datei speicherst du entweder im gleichen Verzeichnis wie die Datei in der die Blätter eingefügt werden oder im Standardvorlagenverzeichnis auf das Excel zugreift.
https://www.herber.de/bbs/user/65778.xls
Das Umstellen der Blattnamen auf variable Namen (pointer) ist natürlich auch möglich. Ausgehend vom Namen des Quellblattes, das ja wohl beim Start des Makros immer das aktuelle Blatt ist, kann man dann alles andere Steuern. Allerdings sprengt das dann langsam hier den Rahmen.
Gruß
Franz
Anzeige
AW: Zellenbereiche hintereinander kopieren
12.11.2009 07:44:57
Camba
Hallo, das war auch meine letzte Frage, vielen dank für alles,
ich werd mal damit etwas rumexperimentieren.

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige