VBA: Verschachtelte For-Schleife
#1
Hallo zusammen,

hätte eine Frage zu einer verschachtelten For-Schleife (s. unten):

Code:
Dim i As Integer
Dim Zahl As Integer
Dim AnzahlMax As Integer

'Schleifencode 
For i = 6 To 10
      For Zahl = 1 To AnzahlMax

        .Cells(i, 6).Value = Zahl

      Next Zahl
  Next i

Ich möchte gern in einem fortlaufenden Spaltenbereich (Spalte F, von Zeile 6 bis 10) den Wert Zahl (startend von 1 bis zu gewisser Anzahl [wird in anderem Tabellenblatt gezählt, übersteigt aber die den Wert 5]) eintragen.
Nun habe ich es geschafft, dass von F6 bis F10 eingetragen - aber leider wird in jeder Zeile der Wert von AnzahlMAx eingetragen und nicht hochgezählt.

Kann mir hier jemand helfen? Stehe hier auf dem Schlauch da die Schleife doch eig. funktionieren müsste.

Danke euch, schönen Sonntag und guten Wochenstart.

Gruß Domi

PS: Zu meinem anderen offenen Thread bzgl. der Lieferantensuche melde ich mich morgen.
Antworten Top
#2
ich habe ne Weile den versteckten Witz gesucht. Bin jetzt fündig geworden.  Anzahlmax ist der höchste erreichbare Wert der inneren Schleife. Diese wird normal hochgezählt. wenn sie fertig ist steht nunmal der letzte Werte in der Zelle und dann gehts eine Zeile weiter unten mit dem gleichen Spielchen wieder los. 

Deine Konstruktion macht so keinen Sinn.  Wenn du eh nur von 6 bis 10 eintragen willst und immer bei Wert 1 anfängst dann brauchst du keine zwei Schleifen.  Erkläre doch noch mal etwas genauer.

edit: geh doch mal mit F8 durch deinen Code durch. Soviel Aufwand ist das nicht.
Antworten Top
#3
Hallo ralf_b

danke für deine Antwort - tatsächlich macht meine Konstruktion keinen Sinn.

Also: Ich möchte in Zeile 6 den Wert 1 eintragen, in Zeile 7 dann den Wert 2 usw. (sofern der Wert in AnzahlMax vertreten ist --> wenn AnzahlMax 4 ist soll nur bis Zeile 9 geschrieben werden).

Kann ich innerhalb der Schleife den einzutragenden Wert von AnzahlMax irgendwie steuern?
Dass AnzahlMax "manuell" hochgezählt wird und von der Schleife jeweils aufgegriffen wird?

Danke für die Hilfe.

LG Domi
Antworten Top
#4
PHP-Code:
'Schleifencode
For i = 1 To AnzahlMax
  If i = 5 Then Exit For
  .Cells(i + 5, 6).Value = i
Next i 
[-] Folgende(r) 1 Nutzer sagt Danke an ralf_b für diesen Beitrag:
  • HAMRacer44
Antworten Top
#5
Hallo Ralf,

danke für die Lösung, perfekt!
Da habe ich tatsächlich den Wald vor lauter Bäumen nicht mehr gesehen.

Danke dir und LG,

Domi
Antworten Top
#6
Hi,

ich weiß nicht was das soll, aber eine Schleife per Exit verlassen halte ich für weniger gut.

Code:
Dim lngI As Long
Dim AnzahlMax As Long
'AnzahlMax = Cells(1, 1) --> Herkunft von AnzahlMax
AnzahlMax = WorksheetFunction.Min(4, AnzahlMax)
For lngI = 1 To AnzahlMax
    Cells(lngI + 5, 6) = lngI
Next
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#7
(09.05.2022, 10:03)BoskoBiati schrieb: ich weiß nicht was das soll, ..
Geht mir genauso.  Der Frager hat bereits mitgeteilt das er die Lösung "perfekt" findet. Was soll dieses unnötige Codeoptimieren dann noch?   Dodgy
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste