wenn du nur den Bereich jetzt 10 mal kopieren willst, würde ich gar kein VBA nehmen und einfach 10 mal kopieren.
über VBA wäre das
Code:
Option Explicit Sub versiv() Dim i As Long With Worksheets("Tabelle2") For i = 1 To 10 'kopiere den Bereich von Tabelle3 (A1:D4) 10 mal alle 5 Zeilen beginnend ab E5 Worksheets("Tabelle3").Range("A1:D4").Copy _ Destination:=.Range("E" & i * 5) Next End With End Sub
lg Chris Feedback nicht vergessen. 3a2920576572206973742064656e20646120736f206e65756769657269672e
wenn du nur den Bereich jetzt 10 mal kopieren willst, würde ich gar kein VBA nehmen und einfach 10 mal kopieren.
Na ja, es geht ja schlussendlich darum, dass dieses Dokument als Vorlage verwendet wird, die dann verschiedene Leute zu verschiedenen Zwecken mehrmals ausfüllen werden. Dabei soll man dann diesen Bereich, der vordefinierte Felder zum Ausfüllen hat, ausfüllen und bei Bedarf einen neuen anfügen können. Natürlich ist die Anzahl dieser Bereiche aber nicht immer dieselbe. Daher der Button.
Vielen Dank für eure Hilfe, ich seh mir jetzt beides mal an.
Okay, das funktioniert immerhin so, wie ich mir das vorgestellt hatte. Der Code ist recht umfangreich, und es wäre mir persönlich lieber gewesen, ihn so einfach wie möglich zu halten, damit ich ihn dann besser an mein Layout anpassen kann... Eben eine Abwandlung des einfachen Kopiercodes, den ich am Anfang dieses Threads gepostet hatte, nur noch erweitert um die Verschiebung des Einfügepunktes...
Nichtsdestotrotz bin ich schon mal sehr dankbar dafür! Ich werde mich mal durchwühlen und schauen, ob ich das an meine Zwecke angepasst bekomme. Die Kommentare sind auf jeden Fall sehr hilfreich. Vielen Dank dafür!
Falls ich noch eine Frage habe, schreib ich sie hier rein.
ich habe mal versucht, deinen Code etwas zu "verschlanken" und alles rauszuschmeißen, was nicht mehr nötig ist. Dabeu habe ich aber anscheinend irgendwas falsch gemacht. Der Code sieht momentan so aus:
Code:
Sub Uebersicht()
Dim ZZeile As Integer Dim kZeile As Integer Dim kSpalte As Integer
'Kopieren des Bereiches F5:L22 Range("C5:I22").Select Selection.Copy
'Festlegung des Einfügepunktes, welche Spalte (Zspalte = der Wert aus der H3 und ' der Zeile ZZeile =Wert aus der Zelle F4 Range(???? & kZeile).Select
'Einfügen der Werte und Formate des kopierten Bereiches Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Range(ZSpalte & kZeile).Select Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False
'Erhöhung der Anzahl und der Zeilen für die nächste Einfügeoperation ZZeile = ZZeile + 18
'Zurücksetzen der Werte auf die Ausgangsposition Range("C4").Value = 5
End Sub
Ich habe die Zählung bis 8 (ich hatte diesen Wert nur angegeben, weil eine unbegrenzte Anzahl an Wiederholungen nicht möglich ist) und die Sache mit der zweiten Spalte in der "Bereichsliste" (nette Idee, aber nicht nötig, weil die endgültigen Bereiche viel flacher werden) rausgenommen, inklusive der entsprechenden Variablen.
Dort, wo bei 'Range' jetzt ???? steht, soll einfach ein fester Wert rein. Blöderweise weiß ich nicht, wie da die Syntax auszusehen hat, und egal, wie ich es versuche, kommt immer folgendes:
Laufzeitfehler '1004':
Die Methode 'Range' für das Objekt '_Global' ist fehlgeschlagen
Was mache ich falsch? Mein Ziel ist ein Code, der wirklich NICHTS anderes tut als: Kopieren, unter den vorhandenen Einträgen Einfügen, fertig. Und das nach Möglichkeit ohne irgendwelche sichtbaren Werte in irgendwelchen sichtbaren Zellen.
27.06.2014, 13:07 (Dieser Beitrag wurde zuletzt bearbeitet: 27.06.2014, 13:26 von Rabe.)
Hi Max,
(27.06.2014, 12:35)VodeAn schrieb: Dort, wo bei 'Range' jetzt ???? steht, soll einfach ein fester Wert rein. Blöderweise weiß ich nicht, wie da die Syntax auszusehen hat, und egal, wie ich es versuche, kommt immer folgendes:
Laufzeitfehler '1004':
Die Methode 'Range' für das Objekt '_Global' ist fehlgeschlagen
Range benötigt eine Zellangabe in " Also z.B. Range("C5") Damit legst Du die Zelle C5 fest. Wenn Du es variabel haben willst, mußt Du den Variablen auch Werte zuweisen.
Code:
'Festlegung des Einfügepunktes, welche Spalte (Zspalte = der Wert aus der H3 und ' der Zeile ZZeile =Wert aus der Zelle F4 Range(???? & kZeile).Select
Range(???? + kZeile) ist keine Zellangabe, egal, was Du anstelle ???? einsetzt.
Denn 1. ist kZeile nirgends mit einem Wert gefüllt 2. die Variable heißt kSpalte und nicht ZSpalte => deswegen gibt es den Parameter "Option Explicit", dann werden solche Fehler verhindert / angezeigt. 3. kSpalte hat keinen Wert 4. ZZeile hat keinen Wert 5. Syntax stimmt nicht. 6. mMn ist da Cells(ZZeile, ZSpalte) besser geeignet
versuchs mal so:
Code:
kSpalte = Range("H3").Value ZZeile = Range("F4").Value kZeile = 5 ' oder auch ein Zellwert oder so was
'Festlegung des Einfügepunktes, welche Spalte (Zspalte = der Wert aus der H3 und ' der Zeile ZZeile =Wert aus der Zelle F4 Range("C" & kZeile).Select
'Einfügen der Werte und Formate des kopierten Bereiches Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Range("C" & kZeile).Select Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False
'Erhöhung der Anzahl und der Zeilen für die nächste Einfügeoperation ZZeile = ZZeile + 22 Range("C4").Value = ZZeile ' 'Zurücksetzen der Werte auf die Ausgangsposition ' Range("C4").Value = 5
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 14.24 einschl. 64 Bit
mach die Schriftfarbe "weiss", dann siehst du auch nichts.
Aber das ist doch jetzt wieder für die zweite Spalte! Diese Funktion will ich doch rausnehmen, weil ich sie nicht brauche, darum geht es doch! Wenn ich das nicht würde rausnehmen wollen, hätte ich deinen ursprünglichen Code ja auch einfach übernehmen können.
Ich zitiere mich nochmal selbst:
(27.06.2014, 12:35)VodeAn schrieb: Mein Ziel ist ein Code, der wirklich NICHTS anderes tut als: Kopieren, unter den vorhandenen Einträgen Einfügen, fertig.
bei dem Code wird alles untereinander in der Spalte C kopiert.
Die Berechnung brauchst du, weil es ja nicht immer die gleiche ANZAHL der Kopien ist. Wenn du das wolltest, geht's einfach mit einer Schleife, 8 mal kopieren. Fertig.
Das wurde dir aber schon mal von chris-ka vorgeschlagen
Es ist nicht genug, zu wissen. Man muss es auch anwenden. Es ist nicht genug, zu wollen. Man muss es auch tun.