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

For Schleife?

Forumthread: For Schleife?

For Schleife?
10.02.2023 10:27:31
Chris
Hallo Forum,

ich möchte ca. 100 unterschiedliche Einträge per Schleife untereinander schreiben. Gibt es ein Möglichkeit das unten stehende Makro zu verkürzen und nicht jedes Mal Cells(+1 , +2 +3 etc) zu schreiben?

For i = 1 To Cells(Rows.Count, 36).End(xlUp).Row 'letzte Zeile der Spalte

.Cells(i + 1, 36).Value = "Apfel
.Cells(i + 2, 36).Value = "Birne"
.Cells(i + 3 ,36).Value = "Banane"
Nextcode>


Gruß
Chris
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: For Schleife?
10.02.2023 12:43:20
Daniel
Hi
wenn du unterschiedliche Einträge hast, die "hart" im Code hinterlegt werden müssen und nicht irgendwo ausgelesen werden können, musst du im Prinzip auch jeden Wert einzeln programmieren
die Schleife ist hier überflüssig, sie sorgt nur dafür, dass du die Aktion mehrfach ausführst, obwohl einmal reichen würde.
das mit dem i + 1, i + 2, i + 3 usw kannst du dir sparen, wenn die Spalte leer ist und du eine Sprungfunktion nutzt, beispielsweise so.
ab dem 3. Wert kann man springen:
Cells(1, 36) = "Apfel"
Cells(2, 36) = "Birne"
Cells(1, 36).End(xldown).Offset(1, 0) = "Banane"
Cells(1, 36).End(xldown).Offset(1, 0) = "Kirsche"
Cells(1, 36).End(xldown).Offset(1, 0) = "Erdbeere"
usw
um Schreibarbeit zu sparen, kannst du aber auch folgendes tun
Cells(1, 36).Resize(3, 1) = Worksheettfunction.Transpose(Array("Apfel", "Birne", "Banane"))
Cells(1, 36).End(xldown).Offset(1, 0).Resize(3, 1) = Worksheetfunction.Transpose("Kirsche", "Erdbeere", "Himbeere")
Cells(1, 36).End(xldown).Offset(1, 0).Resize(3, 1) = Worksheetfunction.Transpose("Orange", "Zitronde", "Mandarine")
usw.
natürlich kannst du auch mehr als 3 Elemente in ein Array packen, eigentlich je mehr, um so besser (so wie es für dich übersichtlich ist)
Gruß Daniel
Anzeige
AW: For Schleife? korrektur
10.02.2023 12:55:25
Daniel
bei den Arrays natürlich so:
Cells(1, 36).Resize(3, 1) = Worksheettfunction.Transpose(Array("Apfel", "Birne", "Banane"))
Cells(1, 36).End(xldown).Offset(1, 0).Resize(3, 1) = Worksheetfunction.Transpose(Array("Kirsche", "Erdbeere", "Himbeere"))
Cells(1, 36).End(xldown).Offset(1, 0).Resize(3, 1) = Worksheetfunction.Transpose(Array("Orange", "Zitronde", "Mandarine"))
usw.

Anzeige
AW: For Schleife?
10.02.2023 13:48:24
Yal
Hallo Chris,
bitte achte drauf, dass Du dein Code genaz genau zwischen die Html-Tags von <pre><code class=language-vba>...</code></pre> einfügst. Zweimal waren deine Frage damit blockiert. Oder füge zuerst den Code, markiere den Code und klicke dann auf " Code <pre><code>"
zu deiner Frage: Du kannst in der For einen Stepping eingeben
For i = 1 To Cells(Rows.Count, 36).End(xlUp).Row Step 3
    .Cells(i + 1, 36).Value = "Apfel
    .Cells(i + 2, 36).Value = "Birne"
    .Cells(i + 3 ,36).Value = "Banane"
Next
Es führt dazu, dass i beim Start = 1, dann =4, =7 usw.
Kürzer wäre mit dem Array von Daniel:
For i = 1 + 1 To Cells(Rows.Count, 36).End(xlUp).Row + 1 Step 3
    .Cells(i, 36).Resize(3, 1) = Worksheettfunction.Transpose(Array("Apfel", "Birne", "Banane"))
Next
aber nicht wesentlich besser.
VG
Yal
Anzeige
AW: For Schleife?
13.02.2023 13:20:10
Chris
Hallo Yal,
danke dir und den anderen für die Rückmeldung. Das mit den HTML Codes und den dait verbundenen Blockierung war mir nicht bewusst.
Der Codes/Die Codes funktionieren und ich kann weiterarbeiten.
Gruß
Chris
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige