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

2 For-Schleifen gleichzeitig und nicht ineinander? Knifflig

Forumthread: 2 For-Schleifen gleichzeitig und nicht ineinander? Knifflig

2 For-Schleifen gleichzeitig und nicht ineinander? Knifflig
11.04.2025 21:09:53
Frank Dreier
Hallo Leute,

erstmal hört sich die Frage trivial an, da das meistens nicht benötigt wird. Es gibt aber eine Ausnahme und zwar wenn gleichzeitig eine Zahl und ein Buchstabe hinzuaddiert werden soll pro Vorgang:

Frage: Es soll einmal Range("A1"), dann Range("A2"), dann Range("A3") pro Schleifendurchlauf selektiert werden. Dazu erschwerend soll aber auch ein Array (z.B. Max, Klaus, Tom) entsprechend am Ende in A1(Max), A2(Klaus) und A3(Tom) stehen und gestartet werden, also 2 Schleifen gleichzeitig und nicht hintereinander. Ist so etwas möglich?

Das müsste in etwa so aussehen, funktioniert aber nicht:

Dim zahl as variant 

Dim Name as variant

For zahl = 1 to 3 and For name = array (Max, Klaus, Tom)
Range("A" & zahl).select
activecell.value = name
Next


Versteht Ihr was ich meine? Bei ausschließlich Zahlen wäre das noch mit einer Schleife evtl. zu handeln durch tricksen wie Multiplikation, Addition etc. bei 2 Erhöhungen von Variablen pro Schleife gleichzeitig, aber wie soll man Zahlen und Texte in einer Schleife gleichzeitig kombinieren und hochzählen/durchzählen?

Packe ich die beiden Schleifen normal hintereinander, springt er erst in A1 und schreibt dann erst Max,Klaus,Tom rein und geht dann in A2 und schreibt Max,Klaus,Tom rein und bei A3 das gleiche. Am Ende steht dann überall: A1 (Tom) A2 (Tom) A3 (Tom)

Diese Frage beschäftigt mich schon länger. Vielleicht habe ich auch Tomaten auf den Augen. Über Umwege wäre es wohl möglich ein oder mehrere Array-Variablen zu überspringen mit If-Anweisungen, das ist aber nicht Sinn der Sache, da bei komplizierteren Sachverhalten man an da schnell am Ende ist. Danke für die Hilfe!


Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: 2 For-Schleifen gleichzeitig und nicht ineinander? Knifflig
11.04.2025 21:19:21
daniel
Hi
das ist eine Schleife.
ggf muss der Schleifenzähler noch "versetzt" werden.

Dim zahl as long

Dim Name as variant
Name = Array("Max", "Klaus", "Tom")
For zahl = 1 to 3
Range("A" & zahl).value = Name(zahl - 1)
Next


besser macht man das hier so:
Dim zahl as long

Dim Name as variant
Name = Array("Max", "Klaus", "Tom")
For Zahl = 0 to ubound(Name)
Range("A1").Offset(zahl, 0) = Name(Zahl)
Next


im konkreten Beispiel ist die Schleife nicht notwendig, man muss aber transponieren, weil ein eindimensionales Array normalerweise einer Zeile entspricht und nicht einer Spalte.
Range("A1:A3").value = Worksheetfunction.Transpose(Array("Max", "Klaus", "Tom"))
Anzeige
AW: 2 For-Schleifen gleichzeitig und nicht ineinander? Knifflig
11.04.2025 21:45:52
Kuwer
Hallo Frank,

Sub aaa()

Dim lngZahl As Long
Dim varName As Variant
varName = Array("Max", "Klaus", "Tom")
For lngZahl = 1 To 3
Range("A" & lngZahl).Value = varName(lngZahl - 1)
Next
End Sub

Gruß, Uwe
Anzeige
Nur ergänzend
12.04.2025 11:15:49
RPP63
Moin!
Allgemeiner bspw. so:
Sub Dingens()

Dim Namen: Namen = Split("Max Klaus Tom")
Range("A1").Resize(UBound(Namen) + 1) = Application.Transpose(Namen)
End Sub


Gruß Ralf
Weiter ergänzend
12.04.2025 12:11:47
RPP63
Wenn man das Transponieren bereits bei der Variablen-Zuweisung vornimmt, erhält man statt des Null-basierten eindimensionalen Arrays ein Eins-basiertes zweidimensionales Array.
Split() liefert 0 to 2
Application.Transpose(Split()) liefert 1 to 3, 1 to 1
Dann kann man das Array direkt dem (errechneten) Zellbereich zuweisen:
Sub Dingens()

Dim Namen: Namen = Application.Transpose(Split("Max Klaus Tom"))
Range("A1").Resize(UBound(Namen)) = Namen
End Sub
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18