Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
672to676
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
672to676
672to676
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Schleife

Schleife
28.09.2005 13:31:02
Matte
Hi
Ich muss ein Makro, dass mit der Aufzeichnungsfunktion erstellt wurde,
mit Schleifen versehen. Dadurch soll es beliebig erweiterbar sein.
Meine Schleife funktioniert natürlich nicht und hat im Forum nur
viele Fragen ausgelöst, daher lass ich diese mal weg.
Wüsste jemand wie man folgenden Teil als Schleife schreiben könnte?
Bin auch mit Ansätzen zufrieden.
' 0Kombination
Range("4:18,45:46,53:53,56:58,148:148,154:156").Copy
Sheets("Auswertung").Select
ActiveSheet.Paste
' 1Kombination
Sheets("Land").Select
Range("204:218,245:246,253:253,256:258,348:348,354:356").Copy
Sheets("Auswertung").Select
Range("A48").Select
ActiveSheet.Paste
' 2Kombination
Sheets("Land").Select
Range("404:418,445:446,453:453,456:458,548:548,554:556").Copy
Sheets("Auswertung").Select
Range("A95").Select
ActiveSheet.Paste
' 3Kombination
Sheets("Land").Select
Range("604:618,645:646,653:653,656:658,748:748,754:756").Copy
Sheets("Auswertung").Select
Range("A142").Select
ActiveSheet.Paste
... .
Es sollen alle in Range angegebene kompletten Zeilen/Zeilenbereiche vom ArbeitblattLand ins Arbeitsblatt Auswertung kopiert werden. Dieses muss
aber für jede Kombination einzeln erfolgen!
Das gute ist, dass die zu kopierenden Zeilen sich alle 200 Zeilen wiederholen.
Siehe 4, 204, 404, 604 ....., Formel: 4+200*x für x=0 bis ...
Kann man diese Formel in die Schleife einbauen und den Laufindex x
zur Berechnung der zu kopierenden Zeilen nutzen?
Auch bei zweiten Range gibt es eine Formel 1+47*x für x=0 bis ...
Vielen vielen Dank
Matte

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife
28.09.2005 14:52:19
Klaus-Dieter
Hallo Matte,
versuche es mal mit diesem Makro:
Option Explicit

Sub uebertrag()
Dim arr As Variant
Dim zei As Variant
Dim eintr As Variant
Dim az As Integer
On Error Resume Next ' ich weiß, ein böser Befehl, muß aber in diesem Fall sein!
zei = Array("4:18", "45:46", "53:53", "56:58", "148:148", _
"154:156", "204:218", "245:246", "253:253", "256:258", _
"348:348", "354:356", "404:418", "445:446", "453:453", _
"456:458", "548:548", "554:556", "604:618", "645:646", _
"653:653", "656:658", "748:748", "754:756")
eintr = Array(0, 15, 17, 18, 21, 22, 25, 40, 42, 43, 46, 47 _
, 50, 65, 67, 68, 71, 72, 75, 90, 92, 93, 96, 97, 100)
For az = 0 To UBound(eintr) + 1
arr = Worksheets("Land").Range(zei(az))
Worksheets("Auswertung").Range("A" & eintr(az) + 1, "IV" & eintr(az + 1)) = arr
Next az
End Sub


Viele Grüße Klaus-Dieter

Online-Excel
Anzeige
AW: Schleife die 2. Version
28.09.2005 16:11:57
Klaus-Dieter
Hallo Matte,
ich hatte übersehen, das in der 2. Tabelle offenbar leere Zeilen zwischen den Einträgen sein sollen. Das berücksichtigt das neue Makro.
Falls es aber so ist, das in diesen Bereichen schon etwas steht, darfst du es nicht anwenden, da diese Inhalte gelöscht würden. Dann bitte noch mal melden, dann müsste man etwas aufwändigeres Programmieren.
Option Explicit

Sub uebertrag()
Dim arr As Variant
Dim zei As Variant
Dim eintr As Variant
Dim az As Integer
On Error Resume Next ' ich weiß, ein böser Befehl, muß aber in diesem Fall sein!
zei = Array("4:18", "45:46", "53:53", "56:58", "148:148", _
"154:156", "204:218", "245:246", "253:253", "256:258", _
"348:348", "354:356", "404:418", "445:446", "453:453", _
"456:458", "548:548", "554:556", "604:618", "645:646", _
"653:653", "656:658", "748:748", "754:756")
eintr = Array(0, 15, 17, 18, 21, 22, 25, 40, 42, 43, 46, 47 _
, 50, 65, 67, 68, 71, 72, 75, 90, 92, 93, 96, 97, 100)
For az = 0 To UBound(eintr) + 1
arr = Worksheets("Tabelle1").Range(zei(az))
Worksheets("Tabelle2").Range("A" & eintr(az) + 1, "IV" & eintr(az + 1)) = arr
Next az
Rows("26:47").Insert Shift:=xlDown
Rows("73:94").Insert Shift:=xlDown
Rows("120:141").Insert Shift:=xlDown
End Sub

Anzeige
AW: Schleife die 2. Version
28.09.2005 16:27:51
Matte
Hi
Vielen vielen Dank für deine Makros. Leider funktioniert es
nicht. Ich lade einfach mal mein Makro hoch.
Wäre super wenn du mal ein Blick drauf werfen könntest. Ich
habe die entscheidene Stelle markiert und etwas dazu geschrieben.
https://www.herber.de/bbs/user/27013.xls
Ciao
Matte
AW: Schleife die 2. Version
28.09.2005 16:57:51
Klaus-Dieter
Hallo Matte,
das Makro funktioniert schon. Zumnidest in der Testumgebung die ich aus deinen Angaben erstellt hatte. Nun weicht das, was ich aus deinem Makro entnehme, in einigen Punkten von dem ab, was in deinem ersten Beitrag stand.
Ein schick gestaltetes Titelbild und das Makro ohne den Bezug auf die tatsächliche Arbeitsmappe ist mir zu dünn, um da noch weitere Arbeit zu investieren. Es wäre schon schön, wenn man den kompletten Umfang kennt. Das vermeidet Blindleistung und Kritik, die so nicht berechtigt ist. Ich lade hier nichts hoch, was nicht getestet ist.
Anbei die Testumgebung, vielleicht hilft sie dir weiter. https://www.herber.de/bbs/user/27014.xls

Viele Grüße Klaus-Dieter

Online-Excel
Anzeige
AW: Schleife die 2. Version
29.09.2005 09:12:38
Matte
HI
Sorry aber Kritik wollte ich nie üben. Die Arbeit ist für meine Verhältnisse
recht umfangreich und ich wollte dadurch niemanden abschrecken oder unnötig
arbeit machen. Hat natürlich nicht geklappt.
Hier mal die gesamte Arbeit.
rcexport ist die Ausgangsdatei. Diese wird mit dem Makro
zu der Datei Ergebnis. Beide Dateien sind stark gekürzt
, es fehlen ca. 3000 bzw. 30000 Zeilen.
https://www.herber.de/bbs/user/27033.xls

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


Der Grundgedanke war, dass die "Kombination" nicht mehr manuell erstellt werden
soll. Ein Schleifendurchlauf soll eine Kombination erstellen. Bis jetzt musste
man für jede Landeskombination jede zu kopierende Zeile in Range manuell
eintragen, was bei 50 Kombinationen und mehr einfach zu lange dauert.
Bei einem Schleifendurchlauf sollen die Zeilen in Range automatisch errechnet
werden mittels des Laufindexes oder einer anderen Variablen. Das ist möglich
da die zu kopierenden Zeilen sich für jede Kombination wiederholen.
Ich weis halt nicht wie man die Rechnungen in Range "schützt", damit vba diese
erst ausrechnet und dann Range ausführt.
"Meine Schleife":
For i = 0 To 49
Sheets("rcexport").Select
Range("(4+(i*200)):(18+(i*200)),(45+(i*200)):(46+(i*200)),(53+(i*200)):(53+(i*200)),(56+(i*200)):(58+(i*200)),(63+(i*200)):(64+(i*200)),(68+(i*200)):(68+(i*200)),(73+(i*200)):(73+(i*200)),(78+(i*200)):(85+(i*200)),(112+(i*200)):(113+(i*200)),(119+(i*200)):(121+(i*200)),(136+(i*200)):(137+(i*200)),(142+(i*200)):(142+(i*200)),(144+(i*200)):(145+(i*200)),(148+(i*200)):(148+(i*200)),(154+(i*200)):(156+(i*200))").Copy
Sheets("Auswertung").Select
Range("A(1+i*47)").Select
ActiveSheet.Paste
Next i
Falls du da etwas weist wäre das toll. Ansonsten vielen Dank für deine
Mühe.
Ciao
Matte
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige