Nested Loop

  • Thread starter Thread starter JMay
  • Start date Start date
J

JMay

Even though the below code can't duplicate sheetname after the first 5 j
loops, Why when I step through the code after the 5th time through the j
Does it go back to For j (and when I hold the mouse over j it shows 6
And want to run lines 4 and 5 a sixth time?
Confused with Nested looping here..



Sub AddSheets()
For i = 1 To 52
For j = 1 To 5
Sheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = Format(Weekday(j + 1), "dddd")
Next j
Next i
End Sub
 
I suspect you are just seeing the value of J when it is in the outer loop:

Sub AddSheets()
For i = 1 To 3
Debug.Print i, j
For j = 1 To 5
Debug.Print "-->" & j
Next j
Next i
End Sub

produces:

1
-->1
-->2
-->3
-->4
-->5
2 6
-->1
-->2
-->3
-->4
-->5
3 6
-->1
-->2
-->3
-->4
-->5
 
<And want to run lines 4 and 5 a sixth time?>

It doesn't. You see the value 6, but it will not execute the next line; it will revert to 1 just in time.
Of course you get errors because of duplicate sheetnames then.

--
Kind regards,

Niek Otten
Microsoft MVP - Excel

| Even though the below code can't duplicate sheetname after the first 5 j
| loops, Why when I step through the code after the 5th time through the j
| Does it go back to For j (and when I hold the mouse over j it shows 6
| And want to run lines 4 and 5 a sixth time?
| Confused with Nested looping here..
|
|
|
| Sub AddSheets()
| For i = 1 To 52
| For j = 1 To 5
| Sheets.Add After:=Worksheets(Worksheets.Count)
| ActiveSheet.Name = Format(Weekday(j + 1), "dddd")
| Next j
| Next i
| End Sub
|
 
I promise, when stepping through my code I monitored the j value and as
it went through the loop with the j value of 5 in lines 4 and 5 it went
to
Line 6 (did nothing) then moved to line 7 (Next I - and did nothing)
then,
When I pressed F8 it jumped back to For j = 1 to 5 where j showed as = 6
- I did an F8 it then Jumped to line 4 << Ilooked ahead a line 5 and j
= 1;
Sorry, but if anything can go wrong -- I will find it - or it will find
me, grrrrr
 
The value of j isn't changed until the for command is executed. The loop
isn't exited until j > 5 (6). when the for statement is highlighted, it
hasn't executed.

So the only thing going wrong is misinterpreting what you observe.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top